達夢數據庫SQL語句執行

#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

相關文章
相關標籤/搜索