#include <QSqlDatabase> #include <QSqlQuery> #include <QSqlRecord> #include <QDebug> int main(int argc, char *argv[]) { QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); QString name = "DSN=dmtest;server=localhost;TCP_PORT=5236;uid=SYSDBA;pwd=*********"; db.setDatabaseName(name); if(!db.open()) //打開數據庫 { qDebug()<<"i am wrong"; return false; //打開失敗 } else { QSqlQuery query(db); //查詢Card表並輸出,測試可否正常操做數據庫 bool a=query.exec("CREATE TABLE TESTDM.MB(ADDRESSID INT PRIMARY KEY,ADDRESS1 VARCHAR(60) NOT NULL,ADDRESS2 VARCHAR(60))"); if(a) { qDebug()<<"database open success!"; } while(query.next()) { qDebug()<<query.value(0).toString() <<query.value(1).toString() <<query.value(2).toInt(); } }return true; }
若是想使達夢數據庫可以正常運行,首先要保證DM-SQL語句的格式正確性,例如代碼中數據庫
CREATE TABLE TESTDM.MB(ADDRESSID INT PRIMARY KEY,ADDRESS1 VARCHAR(60) NOT NULL,ADDRESS2 VARCHAR(60))
其中TESTDM是模式名,MB是該模式下的表名測試
後記:我認爲之因此會成功是由於TESTDM模式的模式擁有者是SYSDBA,而數據源的的ID也是SYSDBA,而且SYSDBA權限最大(我的認爲是最大),因此能執行成功,而且在SYSDBA帳號下,由於權限最大因此基本上全部的模式都能進行SQL語句處理,而若是當初設置數據源時用的不是SYSDBA帳號而是其餘用戶帳號,可能非用戶下的模式就沒法進行SQL語句執行ui