我正在尝试创建与数据库的连接,并向数据库插入/删除/进行查询。我对SQL比较了解,但在Qt中似乎无法绕过它。我曾经在Delphi中编程。

到目前为止,这是我的代码:

QSqlDatabase db;
db.addDatabase("QSQLITE");
db.setHostName( "localhost" ); //I don't know if i should include this the database is in the same directory as my program
db.setDatabaseName( "Xmato.odb" );
db.setUserName( "" ); //There is no username
db.setPassword( "" ); //There is no password
db.open();
db.prepare("SELECT * FROM Members");
db.exec();


我已将此添加到我的.pro文件中:

QT += sql;


我的主文件包含一个QtSql。

当我运行此代码时,出现错误:

QSqlQuery::prepare: database not open


任何想法,我将不胜感激。

附注:我在Linux Ubuntu 12.04上使用c ++,并使用LibreOffice Base创建数据库。

最佳答案

经过一番谷歌搜索-openoffice libre的内部数据库正在使用HSQLDB(Java的自然选择)。 Here's a small discussion about HSQLDB

看来有些版本的openlibre base也可以连接到external databases.,我建议您设置一些C ++更易于访问的东西,特别是Qt。

Only a few drivers like ODBC & SQLite is included by default.

这意味着根据所使用的数据库,可能需要获取其他源代码(或程序包)并编译一个plugin / dll / so。该库由QtSql模块动态加载(即运行时)。我在mysql drivers中遇到了这个问题。

完成所有设置后,对addDatabase的调用应与您正在使用的数据库类型匹配。

QSqlDatabase::addDatabase( "QODBC" );  // For something like MSSQL
QSqlDatabase::addDatabase( "QSQLITE" );  // For SQLite
QSqlDatabase::addDatabase( "QMYSQL" );  // For MySQL


就个人而言,如果您只是为了赚钱,SQLITE是一个快速而简单的数据库。 You can even download plugins/extensions for Mozilla Firefox that will offer you a GUI to the database.

关于c++ - QtSql连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17236072/

10-12 17:44