我正在尝试创建与数据库的连接,并向数据库插入/删除/进行查询。我对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/