Qt連接sql server數據庫遇到的問題


    在QT中使用addDataBase添加一個數據庫連接,其中第一個參數應該填入使用數據庫驅動的類型,如QMYSQL、QSQLLITE、QSQLPSSQL等。
  
  
  
          
  1. QSqlDatabase QSqlDatabase::addDatabase(const QString & type, const QString & connectionName = QLatin1String( defaultConnection ))
第一個參數指定了應用程序使用哪一種數據庫驅動訪問數據庫。

        Qt自己建立了不同數據庫的驅動,這些驅動會調用相應DBMS的編程接口對數據庫進行操作。下面給出QtSql模塊定義的驅動類型,與對應的DBMS。
QDB2
IBM Db
QIBASE Borland InterBase
QMYSQL MYSQL
QOCI 甲骨文公司
QODBC ODBC(包括微軟公司的Server服務器)
QPSQL PostgreSQL的7.3版以及更高版
QSQLITE QLite第三版
QSQLITE2 QLIte2第二版
QTDS sybase自適應服務器

由圖可以看出其中只有QODBC比較特殊,QODBC驅動調用ODBC驅動接口, ODBC對數據庫的操作不依賴任何的DBMS,不直接於DBMS打交道,它將所有的數據庫操作交給對應DBMS驅動程序去完成。因此在使用QODBC時候有兩種連接方式:
  • DNS字符串
    
    
    
            
  1. QString dsn = "DRIVER={SQL SERVER};SERVER=58.67.161.109;DATABASE=RDBS;UID=RDBS_USER;PWD=RDBS_USER_7010387;";
  2. //還要注意這里的用戶名要有創建表的權限,不然創建下面的表student會不成功。
  3. db.setDatabaseName(dsn); //數據庫名 db.setUserName("RDBS_USER");//登錄名,我再dsn里設置UID和PWD后,就不需要設置了
  4. if(!db.open ())
  5. {
  6. QSqlError error = db.lastError();
  7.          return false;
  8. }

  • 手動設置ODBC數據源

控制面板->系統和安全->管理工具->數據源(ODBC)

   代碼:

QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");  

db.setDatabaseName("testdsn");  

db.setUserName("sa");  

db.setPassword("scada");  

三、下面是ODBC和OLEDB的連接字符串寫法:

1、ODBC連接字符串

//適合數據庫類型 連接方式

access 

"Driver={microsoft access driver(*.mdb)};dbq=*.mdb;uid=admin;pwd=pass;"

dBase

 "Driver={microsoft dbase driver(*.dbf)};driverid=277;dbq=------------;"

oracle 

"Driver={microsoft odbc for oracle};server=oraclesever.world;uid=admin;pwd=pass;"

MSSQL server 

"Driver={sql server};server=servername;database=dbname;uid=sa;pwd=pass;"

MS text 

"Driver={microsoft text driver(*.txt; *.csv)};dbq=-----;extensions=asc,csv,tab,txt;Persist SecurityInfo=false;"

Visual Foxpro

 "Driver={microsoft Visual Foxpro driver};sourcetype=DBC;sourceDB=*.dbc;Exclusive=No;"

MySQL 

"Driver={mysql};database=yourdatabase;uid=username;pwd=yourpassword;option=16386;"

SQLite 

"Driver={SQLite3 ODBC Driver};Database=D:\SQLite\*.db"

PostgreSQL 

"Driver={PostgreSQL ANSI};server=127.0.0.1;uid=admin;pwd=pass;database=databaseName"






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM