QtSql connection
QtSql connection
我正在尝试创建到数据库的连接,并插入/删除/查询数据库。我对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++,并使用LibreOfficeBase创建我的数据库。
经过一番谷歌搜索后,openoffice libre的内部数据库正在使用HSQLDB(Java的自然选择)。这里有一个关于HSQLDB的小讨论。
openlibre库的某些版本似乎也能够连接到外部数据库。我建议设置一些C++更容易访问的东西,特别是Qt。
只有少数驱动程序,如ODBC&默认情况下包括SQLite。
这意味着,根据所使用的数据库,可能需要获得额外的源代码(或包)并编译插件/dll/so。该库由QtSql模块动态加载(即运行时)。我在mysql驱动程序中遇到过这种情况。
当您完成所有这些设置后,对addDatabase的调用应该与您正在使用的数据库类型相匹配。
QSqlDatabase::addDatabase( "QODBC" ); // For something like MSSQL
QSqlDatabase::addDatabase( "QSQLITE" ); // For SQLite
QSqlDatabase::addDatabase( "QMYSQL" ); // For MySQL
就个人而言,如果您只是为了好玩,那么一个快速简单的数据库就是SQLITE。您甚至可以下载Mozilla Firefox的插件/扩展,为您提供数据库的GUI。
驱动程序未加载
您需要QSQLITE驱动程序。
db.drivers()返回所有可用数据库驱动程序的列表。
在Ubuntu 12.04中,sqlite的驱动程序位于名为libqt4-sqlsqlite的包中。
但是:odb
是sqlite数据库吗??
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
来设置要打开的文件。
- 我可以<QtSql>在 C4Droid 中使用吗?
- 为什么 QObject::d isconnect(const QMetaObject::Connection &connection) 采用 const 参数并打算修改它?
- QtSql:绑定不会改变SQLite的查询
- 如何使用 epoll(void* event.data.ptr) 管理 Connection 的生命周期
- MySQL 异常"connection lost during query"、"MySQL server has gone away"和"command out of sync"
- C++ ADO Connection
- raspbian (rasp pi 3) connection to database (mysql / mariadb
- KMean and PCA connection
- 为什么提升 asio udp 连接会抛出"send: Connection refused"?
- QTcpSocket 在几次连接成功后发出"Connection Refused Error"?
- 我需要SQL服务器才能使用Qt的QtSql库吗?
- 如何使用 QtSql 获取 EXISTS 运算符的返回值
- 如何使用 QtSql 获取行数和列数
- Libpqxx connection pool
- 使 mysqlpp::Connection 对象成为 wxFrame 类对象的私有成员
- 修复:C++服务器/客户端程序:"Connection refused"
- visual C++ ODBC SQL Server 2008 Connection
- QtSQL 双重插入数据库
- 捕获"NVIDIA OpenGL driver lost connection"错误
- QtSql connection