0

当我尝试在我的选择查询中放置通配符时,qt 给了我一个错误。我需要将变量与查询结果进行比较,但输入通配符似乎不起作用。请帮忙!

Text{
    id: searchresults
    text: ""
    font.pixelSize: 45
    color: "black"
    opacity: 1
    x: 10

    function findHerb(value) {
        var db = getDB();                

        db.transaction(
            function(tx) {

                var rec = tx.executeSql('SELECT name FROM Herbs WHERE name LIKE "?%"', [value]);

                var r = "";

                for(var i=0; i<rec.rows.length; i++) {
                    r+= rec.rows.item(i).name + "\n"
                }

                text = r;

            }
        )

    }
}
4

1 回答 1

0

这是一种 hacky 建议,因为它显然没有解决您的确切方法无法正常工作的原因。但我的猜测是,%当它将参数扩展到语句中时,它会以某种方式引起问题。

尝试这样的事情......

var likeVal = value + "%";
var rec = tx.executeSql('SELECT name FROM Herbs WHERE name LIKE "?"', [likeVal]);

另外,我的另一个猜测是,args 已经用引号为您参数化了,并且您将其设为双引号。这是另一种可能性:

var rec = tx.executeSql('SELECT name FROM Herbs WHERE name LIKE ?%', [likeVal]);
于 2012-03-29T15:44:22.833 回答