Qt Sql bindValue与%

本站所有文章由本站和原作者保留一切权力,仅在保留本版权信息、原文链接、原文作者的情况下允许转载,转载请勿删改原文内容, 并不得用于商业用途。 谢谢合作。
原文链接:Qt Sql bindValue与%

Qt Sql bindValue与%

今天qq群里有人问了个有难度的sql问题(或许很没难度,呵呵, 可惜笔者基本上对sql一窍不通), 如下code:

QString sql("SELECT id, name ");    
 sql += "FROM customer WHERE name LIKE '%:name%'";   //issue this line
bool result = false;       
 QSqlDatabase db = DBUtil::getDatabase(ok, error);     
QSqlQuery query(db);     
query.prepare(sql);     
query.bindValue(":name", name);     
result = query.exec();

这里的bindValue并不能实现替换。 估计是%在字符串里被定义成了特殊的字符, 可能影响了bind的功能。 向专家咨询了一下, 得到了以下的解决方式:

QString sql("SELECT id, name )";    
 sql += "FROM customer WHERE name LIKE :name";   //issue this line
bool result = false;       
 QSqlDatabase db = DBUtil::getDatabase(ok, error);     
QSqlQuery query(db);     
query.prepare(sql);     
query.bindValue(":name", "%"+name+"%");     
result = query.exec();

看上去应该能行。 正在实验, 稍后贴测试结果。

你可能感兴趣的:(sql,qq,测试,query,咨询,qt)