新手在此处创建数据库时遇到问题。 以下代码编译好,但没有创建数据库,我找不到任何sqlite文件。
#include "makeDB.h"
#include <iostream>
#include <QString>
#include <QtSql>
void makeDB(QString dbName) {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("localHost");
db.setDatabaseName(dbName);
db.setUserName("logger");
db.setPassword("logger");
}
#include <QtGui/QApplication>
#include <QString>
#include <QtSql>
#include "mainwindow.h"
#include "makeDB.h"
#include "createTable.h"
#include "ui_mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
makeDB("log1");
createTable();
return a.exec();
}
我在这里做错了什么?谢谢! Waynew 编辑/删除消息
答案 0 :(得分:3)
我们无法看到你createTable()
做了什么,你从未调用过的代码db.open()
大多数QT数据库和SQL调用返回bool
成功,并且有一个{ {1}} lastError()
和QSqlDatabase
来电的{1}}功能。检查是否有适当的电话,即QSqlQuery
和db.open()
返回false。
e.g。
query.exec()
此外,我不认为SqlLite支持任何类型的身份验证this似乎表明您可以通过从SqlLite的创建者那里获得扩展许可来保护您的数据库。
对于实际的表创建,应该有一些执行的SQL如下所示:
bool makeDB(QString dbName) {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("localHost");
db.setDatabaseName(dbName);
bool result = db.open();
if (result)
{
//do more processing
}
else
{
qDebug() << db.lastError().text()
}
return result;
}
取决于您实际需要的列。
This是相应的文档。