我正在尝试创建到数据库的连接,并对数据库进行插入/删除/查询。我对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 Ubuntu12.04上使用c++,并使用LibreOffice Base创建我的数据库。
发布于 2013-06-22 00:14:37
在google-ing - openoffice之后,libre的内部数据库使用的是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.
这意味着根据所使用的数据库,可能需要获取额外的源代码(或包)并编译一个插件/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.
发布于 2013-06-21 23:12:19
未加载
驱动程序
您需要QSQLITE驱动程序。
db.drivers()返回所有可用数据库驱动程序的列表。
在Ubuntu 12.04中,sqlite的驱动程序位于名为libqt4-sql-sqlite的包中。
但是:odb是sqlite数据库吗??
发布于 2013-06-22 05:11:00
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName( "Xmato.odb" );
if (db.open())
{
QSqlQuery query(db); // if multiple connections used, without the `db` in constructor will cause the query to use the default database (first opened and available one)
query.exec("select * from members");
}也应该这样做。不需要用户名和密码,因为它是一个文件,你只需要使用setDatabaseName来设置你想要打开的文件。
https://stackoverflow.com/questions/17236072
复制相似问题