2012-12-20 2 views
0

Je suit PhoneGap déclaration d'insertion sqlite:problème étrange d'insertion db dans PhoneGap + sqlite

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values("uniqueId","'+uniqueId+'")' , [] , querySuccess, errorQuery); 

Les deux colonnes sont du texte de type de données, mais la requête d'insertion ne fonctionne pas. uniqueId est une chaîne aléatoire de 8 caractères telle que 'e72361c6'. Chose étrange est quand j'insère directement "e7231c6", cela fonctionne. Pourquoi ne fonctionne-t-il pas avec variable. Une autre chose à noter ici est que la chaîne aléatoire a été générée en décryptant la valeur stockée dans server-db. Je décrypte et obtient la chaîne aléatoire de 8 bits sur le serveur et la valeur décryptée est ensuite envoyée à l'appareil, stockée dans une variable et insérée dans la base de données qui est où le problème se produit. Quand j'alerte la chaîne juste avant l'insertion, elle montre une chaîne de 8 caractères correcte. D'un autre côté, si je ne décrypte pas et envoie simplement la chaîne de 8 caractères du serveur, l'insertion se passe avec succès. Peut-être qu'il a quelque chose à voir avec le format de chaîne encoder/décoder. Toute aide est appréciée.

+1

Est-ce que sqlite distingue les guillemets simples et doubles? – ErikE

+0

j'ai essayé avec des guillemets simples et doubles – clint

+0

essayez de supprimer le xtra "vous avez.Comme ceci ... tx.executeSql ('insérer dans' + gAppConfig.configTable + '(clé, valeur) valeurs (" uniqueId ","' + uniqueId + '")', [], querySuccess, errorQuery); – Daniel

Répondre

0

Il suffit de remplacer de "uniqueId" avec NULL

tx.executeSql('insert into "'+gAppConfig.configTable+'" (key , value) values(null,"'+uniqueId+'")' , [] , querySuccess, errorQuery); 

Ou vous pouvez utiliser cette

tx.executeSql('insert into "'+gAppConfig.configTable+'" (value) values("'+uniqueId+'")' , [] , querySuccess, errorQuery); 

rappelez-vous que vous avez affaire à SQLite et non avec le serveur SQL normal.

0

En SQL, les identificateurs comme les noms de table/colonne doivent utiliser des guillemets doubles, tandis que les chaînes doivent utiliser des guillemets simples. (Les autres guillemets sont pris en charge pour la compatibilité avec d'autres DB, mais peuvent être mal interprétés.)

INSERT INTO "MyTable"("col1", "col2") 
VALUES ('ABC', 'xyz')