今天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();
———————————-
看上去应该能行。 正在实验, 稍后贴测试结果。