运用QSqlQueryModel进行数据选择时,where条件能识别数字,但是不能识别字母和汉字!
使用QSqlQueryModel进行数据选择时,where条件能识别数字,但是不能识别字母和汉字!!首先已经在论坛里搜索过
使用QSqlQueryModel进行数据选择时,where条件能识别数字,但是不能识别字母和汉字!!
首先已经在论坛里搜索过了,找到几个帖子,试了里面的方法但都没有成功。
代码如下
QString car;
car =ui->edit_6_car->text();
QSqlQueryModel * model = new QSqlQueryModel;
model->setQuery(QObject::tr("select * from histroyinfo where car_id = %1") .arg(car));
.......
后面就是把查找的数据通过QTableView现实出来的代码。
问题在这点,如果car只是纯数字,只要数据库有匹配的,就能查找出来,但是如果查找条件里面包含字母,或者汉字,就算有匹配的结果也查找不出来。请问下这个怎么解决!谢谢!
我已经使用过的方法
1:把QObject::tr换成QString
2:用fromLocal8Bit函数;
3:QObject::tr("select * from histroyinfo where car_id = %1") .arg(car)换成
"select * from histroyinfo where car_id = "+car+""
再次感谢!!
[解决办法]
把编码格式设置为uft8试试
[解决办法]
你的("select * from histroyinfo where car_id = %1") .arg(car)这个语句是有问题的。
("select * from histroyinfo where car_id = '%1'") .arg(car), 字符串啥的要用单引号,
而用占位符就没有这个问题了,因为已经帮你转换了。
你可以去看下bindValue,
void QSqlQuery::bindValue(const QString & placeholder, const QVariant & val, QSql::ParamType paramType = QSql::In)
const QVariant & val已经把你的要查询的东西转换成符合sql要求的东西了。
建议是用占位符的方式来进行sql操作