QT 之 使用 ODBC 驅動連接人大金倉數據庫
獲取數據庫驅動和依賴動態庫
- 此操作可在人大金倉官網下載與系統匹配的接口動態庫,或者從架構數據庫的源碼中獲取驅動和依賴動態庫
- 分別為:
驅動動態庫:kdbodbcw.so
依賴動態庫:libkci.so.5
安裝 odbcinst 軟件
sudo apt install odbcinst -y
- 配置驅動文件 /etc/odbcinst.ini 如下:
[KingbaseES]
Description = KingbaseES Driver
Driver = /opt/KingbaseES/kdbodbcw.so
Setup = /opt/KingbaseES/libkci.so.5
Debug = 0
CommLog = 1
使用QT進行連接數據庫,代碼如下:
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlError>
#include <QtCore/QDebug>
int main(void)
{
QString driver = "KingbaseES"; // 此名稱和 odbcinst.ini 中的名稱相同【KingbaseES】
QString server = "IP Address";
QString database = "TEST";
QString username = "***"; // 用戶名
QString password = "***"; // 密碼
QString dsn = QString("Driver={%1};Server=%2;Database=%3;Uid=%4;Password=%5;Port=%6")\
.arg(driver)\
.arg(server)\
.arg(database)\
.arg(username)\
.arg(password)\
.arg(54321);
/*
QString dsn = QString("Driver={%1};Server=%2;Database=%3;Uid=%4;Password=%5;Port=%6")\
.arg(driver)\
.arg(server)\
.arg(database)\
.arg(54321);
*/
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(dsn);
// db.setUserName(username);
// db.setPassword(password);
if (db.open())
qDebug() << "connect successful";
else
qDebug() << db.lastError().text();
return 0;
}
- 運行結果如下:
