#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语句执行