2012-03-28 12 views
0

qt gibt mir einen Fehler, wenn ich versuche, einen Platzhalter in meine Select-Abfrage zu setzen. Ich muss eine Variable mit einem Abfrageergebnis vergleichen, aber das Einfügen von Platzhaltern scheint nicht zu funktionieren. Bitte helfen!Abfrage mit Wildcard nicht in 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; 

      } 
     ) 

    } 
} 
+0

Warum nicht auch den Fehler enthalten? – jdi

+0

Dies ist der Fehler Fehler: Parameteranzahl stimmt nicht überein –

Antwort

0

Dies ist eine Art ein hacky Vorschlag, wie es offensichtlich nicht adressiert, warum Ihre genaue Annäherung nicht richtig arbeitet. Aber meine Vermutung ist, dass die % irgendwie ein Problem verursacht, wenn es die Parameter in die Anweisung erweitert.

versuchen, etwas so ...

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

Auch meine andere Vermutung ist, dass die Argumente für Sie mit Anführungszeichen bereits parametriert sind und Sie machen es doppelte Anführungszeichen. Hier ist eine andere Möglichkeit:

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

es hat funktioniert! haha.thanks viel! –

+0

Der erste oder zweite Vorschlag? Ich möchte nur meine Antwort aktualisieren, damit zukünftige Leute klar sind – jdi

+0

@GastonManrique: Vergessen Sie nicht, das Häkchen zu setzen, wenn diese Antwort Ihr Problem gelöst hat! – jdi