Qt操作Access数据库

时间:2021-05-10 10:59:25

http://blog.csdn.net/xysq/article/details/3950722

Qt为数据库访问提供QtSql模块实现了数据库与Qt应用程序的无缝集成。QtSql模块使用驱动插件与不同的数据库接口通信。Qt自带有QODBC驱动,通过windows平台上提供的ODBC驱动访问支持ODBC的数据库,如Ms Access、SQL Server等 (Windows XP 自带有Access和SQL Server的ODBC Driver)。下面我们就用QODBC对Access数据库进行访问。

    使用QtSql模块之前,需在工作文件(.pro)中中入QT += sql,在头文件中包含#include <QtSql>。

       QSqlDatabase提供访问一个数据库的连接接口。建立一个连接,需要调用QSqlDatabase的成员函数:addDatabase。

       QSqlDatabase  addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection ) )参数type为驱动名,我们这里使用"QODBC",第二个参数为连接名,缺省值为默认连接,我们这里把连接名设为"test"。这里假如你使用相同连接的连接名,则新连接将替换旧连接。

     创建连接后,以后可以使用QSqlDatabase的静态函数database,获取连接。

  QSqlDatabase  database ( const QString & connectionName = QLatin1String( defaultConnection ), bool open = true ) ,参数defaultConnection为数据库连接名,这里我们上面设的是"test",参数open为是否打开数据库连接。

   setDatabaseName ( const QString & name )函数, 参数name,对于QODBC驱动,这里是DSN 文件名或者一连接字符串,这里我们使用连接字符串:"DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=test.mdb",test.mdb为Access数据文件名。

好了,用代码来对test.mdb数据库的访问。

 

//创建数据库连接
void MainWindow::connectDB()
{
//获取是否存在有数据库连接
    QSqlDatabase dbconn = QSqlDatabase::database("test", false);
 
    if(dbconn.isValid())//存在连接直接退出
    {
        return;
    }
   //创建一连接名为"test"的数据库连接
dbconn = QSqlDatabase::addDatabase("QODBC", "test");
    QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=test.mdb");
    dbconn.setDatabaseName(dsn);
}
//查询数据库数据
void MainWindow::queryDB()
{
    //获取连接名库"test"的连接
    QSqlDatabase dbconn = QSqlDatabase::database("test", false); 
    dbconn.open();
    QSqlQueryModel q;
    q.setQuery(tr("SELECT * FROM companyinfo"),dbconn);
}