QT ODBC方式连接MS SQLSERVER2000/2005、ACCESS示例 (字符串方式,不用建DSN)

 初学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。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值