2010-11-02 7 views
2

J'écris une fonction qui va s'asseoir dans un fichier externe qui crée des tables dans une base de données Web. Tout ceci est fait avec Javascript et HTML 5 bases de données locales. Je veux passer dans une variable pour générer le nom de la table comme:Définition du nom de la table en tant que variable pour une base de données Web?

mydb.transaction(function(tx) { 
    tx.executeSql('CREATE TABLE IF NOT EXISTS **?** (id INTEGER PRIMARY KEY, name TEXT)', [**DB_Table**]); 
}); 

mais comprendre que la marque question ne peut être utilisé à la place de literals est-il un moyen de contourner cela?

Répondre

0

Non, il n'y a aucun moyen de paramétrer les noms de schéma. Si vous devez vraiment autoriser les noms dynamiques, vous devrez les encoder manuellement dans un littéral de nom de schéma. Le format SQL ANSI pour les littéraux de nom de schéma consiste à les entourer de guillemets et à remplacer tout caractère de guillemets à l'intérieur de la chaîne par un guillemet double.

var txlit= '"'+tc.replace(/"/g, '""')+'"'; 
query= 'CREATE TABLE IF NOT EXISTS '+txlit+' (id INTEGER ...)'; 
0

Eh bien, il existe certaines raisons pour les limites des paramètres sql.

Mais je pense que vous faites face à la problème de programmation meta, alors consultez le StringTemplate. Avec StringTemplate, il ne vous force pas à l'utiliser exclusivement. C'est juste un langage de modèle String pour n'importe quel but.

Malheureusement, StringTemplate ne supporte pas JavaScript, mais je pense que la philosophie de son design est encore utile de savoir.

Questions connexes