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

これは、正確なアプローチが正しく機能しない理由に明らかに対処していないため、一種のハッキーな提案です。しかし、私の推測では%、パラメーターをステートメントに展開するときに、が何らかの問題を引き起こしていると思います。

このようなことを試してください...

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 に答える