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();

———————————-

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

posted on 2009-07-02 17:56  酷享Qt  阅读(1424)  评论(0)    收藏  举报