亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1496 | 回復(fù): 0
打印 上一主題 下一主題

QT連接SQL Server(ODBC) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-20 09:44 |只看該作者 |倒序?yàn)g覽
QT提供了對(duì)多種數(shù)據(jù)庫(kù)的訪問(wèn)支持,對(duì)SQL Server也可以通過(guò)ODBC來(lái)進(jìn)行訪問(wèn)。
要想順利訪問(wèn)SQL Server。 首先要保證以下幾點(diǎn):
1. QT編譯時(shí)已經(jīng)編譯了QtSql
2. 編譯了ODBC插件?梢酝ㄟ^(guò) configure -plugin-sql-odbc來(lái)保證,也可以單獨(dú)編譯~\src\plugins\sqldrivers\odbc
qmake -t vclib odbc.pro
qmake
nmake
編譯后,在~\plugins\sqldrivers\下應(yīng)該有qsqlodbcd4.dll(debug)或qsqlodbc4.dll
此時(shí),可以用下面的程序,測(cè)試一下你的QT目前支持哪些數(shù)據(jù)庫(kù)訪問(wèn)。
  1. #include <QApplication>
  2. #include <QSqlDatabase>
  3. #include <QStringList>
  4. #include <QDebug>

  5. int main(int argc, char* argv[]) {
  6. QApplication app(argc, argv);

  7. qDebug() << "Available drivers:";
  8. QStringList drivers = QSqlDatabase::drivers();
  9. foreach(QString driver, drivers)
  10. qDebug() << "\t" << driver;

  11. QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
  12. qDebug() << "ODBC driver valid?" << db.isValid();
  13. }

如果輸出中有
Available drivers:
"QSQLITE"
"QODBC4"
"QODBC"
ODBC driver valid? true 就說(shuō)明已經(jīng)可以成功支持ODBC了。
3. 要連接數(shù)據(jù)庫(kù),有3種方式:
參考下面的連接:QT連接ODBC數(shù)據(jù)庫(kù)
要注意的就是連接數(shù)據(jù)庫(kù)時(shí)使用的數(shù)據(jù)庫(kù)名,和sqlite等是不同的,并不是直接寫(xiě)入數(shù)據(jù)庫(kù)名稱。
而是DSN名。
如果你已經(jīng)設(shè)置好了DSN,可以直接輸入DSN名。 如果沒(méi)有,可以采用DSN連接字符串直接連接ODBC數(shù)據(jù)庫(kù)。

例如:
  1. //下面例子連接到10.0.0.2上的sql server名為temp的數(shù)據(jù)庫(kù)上。 程序中指定此連接的名稱為dbTemp
  2. QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", "dbTemp");
  3. db.setHostName("10.0.0.2"); //如果dsn中已經(jīng)含有SERVER,可以省略此句
  4. QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=10.0.0.2;DATABASE=temp");
  5. //如果已經(jīng)設(shè)定DSN,可以寫(xiě)為QString::fromLocal8Bit("SQLSERVER_DSN")
  6. db.setDatabaseName(dsn);
  7. //即使dsn中已經(jīng)設(shè)置了UID和PASSWD,仍然需要執(zhí)行setUserName和setPassword的步驟
  8. db.setUserName("sa");
  9. db.setPassword("xxxxxx");
  10. if(!db.open()) {
  11.         QMessageBox::critical(0, QObject::tr("Database Error"),
  12.             db.lastError().text());
  13.         return false;
  14. }
  15. return true;


如果dsn名設(shè)錯(cuò),將會(huì)在db.open()時(shí)出現(xiàn)“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified QODBC3: Unable to connect
“[Microsoft][ODBC 驅(qū)動(dòng)程序管理器] 未發(fā)現(xiàn)數(shù)據(jù)源名稱并且未指定默認(rèn)驅(qū)動(dòng)程序 QODBC3: Unable to connect”錯(cuò)誤。
其他類(lèi)型數(shù)據(jù)庫(kù)應(yīng)該修改dsn字符串與其相適應(yīng):
下面是ODBC和OLEDB的連接字符串寫(xiě)法:

ODBC連接

適合數(shù)據(jù)庫(kù)類(lèi)型 連接方式
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"

OLEDB連接

適合的數(shù)據(jù)庫(kù)類(lèi)型 連接方式
access  "Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass;"

oracle  "Provider=OraOLEDB.Oracle;data source=dbname;user id=admin;password=pass;"

MS SQL Server  "Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass;"

MS text  "Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Properties'text;FMT=Delimited'"

參考:
http://www.gamedev.net/community/forums/topic.asp?topic_id=523765
http://www.qtcn.org/bbs/read.php?tid=12414
http://www.qtcn.org/bbs/read.php?tid=7197&keyword=SQL%20Server
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP