如何在Qt中创建一个SQLite数据库

20

我正在尝试在Qt中创建一个SQLite数据库。这是我的代码:

QDir databasePath;
QString path = databasePath.currentPath()+"myDb.db";
QSqlDatabase dbConnection = QSqlDatabase:addDatabase("QSQLITE");
db.setDatabaseName(path);
db.open();

运行代码时没有报错,但我无法在我定义的路径中找到我创建的数据库。

这段代码实际上是否创建了数据库,还是只进行了一些初始化操作?

如果没有创建数据库,那么我如何在应用程序本身内创建数据库?(我不是在谈论插入。)


1
硬编码路径而不是创建一个变量,然后再次测试。这是一种确保问题不是代码或糟糕字符串问题而是其他问题的方法。 - PaulMcKenzie
@PaulMcKenzie:这实际上解决了位置的问题,非常感谢。 - user3009135
这里最常见的错误是路径错误。 - Hot Licks
2个回答

31

你还应该创建一个查询,以创建非空数据库并使用正确的变量名称(在你的代码中,你首先使用dbConnection,然后再使用db)。例如:

您还应创建一个查询,以创建非空数据库并使用正确的变量名称(在您的代码中,您首先使用dbConnection,然后再使用db)。例如:

QString path = "path";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//not dbConnection
db.setDatabaseName(path);
db.open();
QSqlQuery query;
query.exec("create table person "
          "(id integer primary key, "
          "firstname varchar(20), "
          "lastname varchar(30), "
          "age integer)");

1
哦,我明白了,我没有注意到他在使用不同的名称,对不起。然而,我使用相同的代码遇到了一个问题,在像这样硬编码路径之后:QString path="c://Users//me//Document//workapce//myproject//databse.db"我的应用程序会崩溃。在调试时,它只是退出并崩溃了..可能是什么问题呢? - McLan
能否通过用户名和密码连接到一个数据库文件? - SexyBeast
@AttitudeMonger 你可以试试这个open()方法 http://doc.qt.io/qt-5/qsqldatabase.html#open-1 - Jablonski

2
他犯的错误是:
QDir databasePath;
QString path = databasePath.currentPath()+"/myDb.db"; // Not "myDb.db"
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(path);
db.open();
QSqlQuery query; // And he should insert some data, as the answer above mentioned
query.exec("create table person "
          "(id integer primary key, "
          "firstname varchar(20), "
          "lastname varchar(30), "
          "age integer)");

数据库文件myDb.db被创建在build目录中,而不是他的source代码目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接