达梦数据库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语句执行

转载于:https://my.oschina.net/u/3782432/blog/1861547

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值