初学QT,连接数据库走了一圈弯路,不过总算折腾出来了,其间参考网文无数,就不一一列举了,先将我实现的代码贴出来,供有需要的人参考: 1. 首先,确定你的QT己编译好ODBC驱动,测试代码如下: qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver; 如果结果中有ODBC,OK,说明ODBC已经可以用了。 2. 连接ACCESS, 代码如下: QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "test2"); db.setConnectOptions("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC3"); QString dsn = QString("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=E:/Work/QT_T001/db/Test.mdb"); db.setDatabaseName(dsn); bool ok = db.open(); QSqlQuery query = QSqlQuery(db); if(ok) { qDebug() << "Access Connect OK!"; query.exec("insert into tblTest(F_cName,F_cSex) values('Test2', 'F')"); qDebug() << db.lastError().text(); } else { qDebug() << "Access Connect Fail!"; qDebug() << db.lastError().text(); } 注:核心问题是DBQ=E:/Work/QT_T001/db/Test.mdb 连接字符串中需用反斜杠 2. 连接SQLSERVER, 代码如下: QSqlDatabase dbconn = QSqlDatabase::addDatabase("QODBC"); QString dsn = QString("Driver={sql server};server=127.0.0.1;database=Test;uid=sa;pwd=wang"); dbconn.setDatabaseName(dsn); dbconn.setHostName(QString("127.0.0.1")); dbconn.setPort(1433); dbconn.setUserName(QString("sa")); dbconn.setPassword(QString("wang")); QTextCodec *BianMa = QTextCodec::codecForName ("GBK"); bool r = dbconn.open(); if (r) { qDebug() << "SQL Server 2000 Connect OK!"; QSqlQuery query = QSqlQuery(dbconn); query.exec(BianMa->toUnicode("Insert into [tblTest] (F_cName,F_cSex) values('李四','女')")); qDebug() << query.lastError().text(); qDebug() << dbconn.lastError().text(); } else { qDebug() << dbconn.lastError().text(); } 注:qDebug() << query.lastError().text();可以告诉你详细的出错信息,照着解决就好了。 以上代码,QT4.5.3 SQLSERVER2000、2005测试OK。 |
QT ODBC方式连接MS SQLSERVER2000/2005、ACCESS示例
最新推荐文章于 2020-12-21 14:54:45 发布