dbliteratura.h:
#ifndef DBLITERATURA_H
#define DBLITERATURA_H
#include <QFile>
#include <QMessageBox>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QDebug>
void dbliteratura()
{
QString sqlfile = "../dbliteratura.sql";
QFile f(sqlfile);
if (!f.open(QIODevice::ReadOnly))
{
QMessageBox::critical(0, "IO Error", "Couldn't open file" + sqlfile + " for reading");
exit(1);
}
QSqlDatabase db = QSqlDatabase::database();
if (!db.isOpen())
{
QMessageBox::critical(0, "Database Error", "Database is not open");
exit(2);
}
// je to divne, ale neni mozne zpracovat celou sql davku, jednotlive prikazy
// tedy musime oddelit (;) a zadavat postupne
QString sql;
QSqlQuery q;
char z;
db.transaction();
while ( f.getChar(&z) )
{
sql = z;
while (f.getChar(&z) && (z != ';')) sql.push_back(z);
q.exec(sql);
}
db.commit();
}
#endif // DBLITERATURA_H
同时在MainWindow中有这个:
#include "dbliteratura.h"
还有这个:
{
ui->setupUi(this);
this->setWindowTitle("DB Literatura");
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
// db.setHostName("geo102");
// db.setUserName("acarlson");
// db.setPassword("1uTbSbAs");
// bool ok = db.open();
dbliteratura();}
这不是我的代码,我只是这个东西的初学者,但我们在一个项目上一起工作,我需要摆脱问题''dbliteratura()'的多重定义 . 所以,我真的不明白该应用程序中发生了什么 .
1 回答
#pragma once
或“旧”版本
static void dbliteratura();