qt4.8与达梦数据库间的插入和更新字符串数值问题
2015-03-02 17:18
507 查看
最近使用qt-creator2.4.1和qt-4.8.1-mingw对达梦数据库进行插入和更新字符串数值发现了一些小问题,也许是qt4本身与达梦DM7之间的一些问题,个人不是很清楚,但是也有正确实现的方法,也许在qt5中没有类似的问题,这里就不讨论了。以下都是部分代码,只做讨论使用首先,使用ODBC连接并打开数据库
数据库中的数据变成上图所示。以上的插入方法在oracle数据库中是正确的,但是在达梦中得不到正确结果。 正确插入还有两种方式可以得到正确的插入结果方式一:直接在prepare的values后使用常量,此时不需要使用bindValue()函数,如下语句
QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
QString name = "DSN=DM;server=localhost;TCP_PORT=5236;uid=SYSDBA;pwd=SYSDBA";
db.setDatabaseName(name);
bool isOk = db.open();
if(isOk)
{
return true;
}else{
QMessageBox::critical(0,QString("错误提示"),QString("对不起,数据库连接失败!"),QMessageBox::Cancel);
return false;
}插入数据 插入出错
QSqlQuery query;
query.prepare("insert into test.person values(?,?)");//插入正确
query.bindValue(0,'EE');
query.bindValue(1,'ee11a');
query.exec();
query.prepare("insert into test.person values('丫丫aa','1111')");
query.exec();
方式二:在bindValue()函数的第二个参数中使用QString类型的变量
QString nameValue="EE";
QString pswValue="ee1122a";
query.prepare("insert into test.person values(?,?)");//插入正确
query.bindValue(0,nameValue);
query.bindValue(1,pswValue);
query.exec();数据更新在更新数据中,也会出现类似的情况,prepare中的占位符使用bindValue()函数赋值时,不可以直接使用字符串常量,只能使用QString类型的变量,以下方式可以正确更新数据
QString sql;
sql=QString("update test.person set psw = ? where name = '%1'").arg(QString("AA"));
query.prepare(sql);
QString pswVlaue="aa12bb";
query.bindValue(0,pswVlaue);
query.exec();
// query.prepare("insert into test.person values('丫丫aa','1111')"); //插入不乱码中文,数字都正确
query.prepare("insert into test.person values(?,?)");//插入正确
// query.bindValue(0,nameline);
// query.bindValue(1,pswline);
QString nameValue="EE";
QString pswValue="ee1122a";
query.bindValue(0,nameValue);
query.bindValue(1,pswValue);
if(query.exec())
{
QMessageBox::information(this,QString("提示"),QString("插入成功!"),QMessageBox::Ok);
//accept();
return;
}
else {
QMessageBox::critical(this,QString("提示"),QString("插入失败!"),QMessageBox::Ok);
return;
}
相关文章推荐
- C# 处理Oracle CLob插入或更新 字符串过长的问题
- mysql 百万级数据插入更新速度问题(转)
- [VB.NET]detailsview 的更新、插入、删除操作遇到的问题
- qt & qt creator 中文字符串查找问题
- 插入和更新数据库时字符串中含有转义字符的处理方法
- 将一个十六进制字符串转换为十进制数值的问题
- Qt显示中文ansi字符串乱码问题解决方案
- tcsh版本问题(字符串转化为数值)
- 一句话解决更新和插入的问题
- (转)在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- Qt TreeView中的排序问题和改变选中的item后更新出错的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 将一个十六进制“字符串”转换为十进制数值的问题
- 解决QT中文字符串在osg中显示乱码的问题
- 关于C#中货币类型和数值类型、字符串类型的转化和在DataGridView中的显示问题:
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题[转]
- QT学习过程中遇到的问题集锦(不断更新)
- 关于向mysql数据库中插入带单引号字符串的问题