加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Qt远程连接SQlServer数据库(转)

(2012-12-02 09:33:11)
标签:

杂谈

分类: 数据库

一:代码。

 

  1.   
  2. void MainDialog::connectSql(QString sIp, int iPort,  QString sDbNm, QString sUserNm, QString sPwd)  
  3.  
  4.     db QSqlDatabase::addDatabase("QODBC");  
  5.     QString dsn QString("Driver={sql server};SERVER=%1;PORT=%2;DATABASE=%3;UID=%4;PWD=%5;" 
  6.                   .arg(sIp)  
  7.                   .arg(iPort)  
  8.                   .arg(sDbNm)  
  9.                   .arg(sUserNm)  
  10.                   .arg(sPwd);  
  11.     db.setDatabaseName(dsn);  
  12.   
  13.   
  14.       
  15.     bool db.open();  
  16.     if (r)  
  17.      
  18.         qDebug() << "SQL Server 2000 Connect OK!" 
  19.   
  20.           
  21.         QSqlQuery query1 QSqlQuery(db);  
  22.         query1.clear();  
  23.         query1.prepare("select top ID from SQL_2000 order by ID desc");  
  24.         bool query1.exec();  
  25.         int id;  
  26.         if (a)  
  27.          
  28.             while(query1.next())  
  29.              
  30.                 id query1.value(0).toInt();  
  31.              
  32.          
  33.   
  34.           
  35.         QSqlQuery query2 QSqlQuery(db);  
  36.         QString sq1 QObject::tr("insert into SQL_2000(Id,Ip,Port,UserName,Password,DbType,DbName)"  
  37.                                   "values (?, ?, ?, ?, ?, ?, ?)");  
  38.         bool query2.prepare(sq1);  
  39.         if(b)  
  40.          
  41.             qDebug() << "insert data success!" 
  42.          
  43.         query2.bindValue(0, id+1);  
  44.         query2.bindValue(1, sIp);  
  45.         query2.bindValue(2, iPort);  
  46.         query2.bindValue(3, sUserNm);  
  47.         query2.bindValue(4, sPwd);  
  48.         query2.bindValue(5, sDbType);  
  49.         query2.bindValue(6, sDbNm);  
  50.   
  51.           
  52.         QSqlQuery query3 QSqlQuery(db);  
  53.         query3.prepare("select from SQL_2000 where Id=1");  
  54.         bool query3.exec();  
  55.         if (c)  
  56.          
  57.             qDebug() << "select data success!" 
  58.             while(query3.next())  
  59.              
  60.                 qDebug() << query3.value(0);  
  61.                 qDebug() << query3.value(1);  
  62.                 qDebug() << query3.value(2).toInt();  
  63.              
  64.          
  65.         else  
  66.          
  67.             qDebug() << query3.lastError().text().data();  
  68.          
  69.   
  70.           
  71.         QSqlQuery query4 QSqlQuery(db);  
  72.         query4.prepare("delete from SQL_2000 where Id=1");  
  73.         bool query4.exec();  
  74.         if (d)  
  75.          
  76.             qDebug() << "delete data success!" 
  77.          
  78.         else  
  79.          
  80.             qDebug() << query3.lastError().text().data();  
  81.          
  82.      
  83.     else  
  84.      
  85.         QMessageBox::information(thistr("提示"), tr("Sql Server数据库连接失败!"), tr("确定"));  
  86.         qDebug() <<"error_SqlServer:\n" << db.lastError().text();  
  87.      
  88.   
  89.     db.close();  
  90. }  

 

二:安装。

    参考http://blog.csdn.net/mingxia_sui/article/details/7723978(安装图解)


三:连接过程遇到的问题。

问题:"[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝 [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性 QODBC3: Unable to connect"

       通过http://topic.csdn.net/u/20100429/10/586ed537-0a66-48ac-97d6-e662e5199339.html对比,我发现问题:

       服务器没有在1433端口侦听。

      (测试方法:在dos下输入netstat -a -n或者netstat -an;结果:找不到tcp 127.0.0.1 1433 listening的项)

解决方法:

    安装补丁(我的版本对应sp4)

       打补丁的过程中出现问题:不能打开要写入的文件C:\WINDOWS\system32\ntwdblib.dll。

       重启还是不行,我就把sp4安装包中的ntwdblib.dll直接拷贝到C:\WINDOWS\system32中。

       再试telnet 127.0.0.1 1433,居然连接上了。

   网卡设置:端口没被侦听,也可能是网卡的问题。

       本地连接--->属性--->Internet协议(TCP/IP)--->属性--->高级--->选项--->属性--->全部允许TCP端口。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有