2010-11-02 43 views
2

我正在写一个函数,该函数将位于在Web数据库中创建表的外部文件中。这一切都是通过Javascript和HTML 5本地数据库完成的。我想在一个变量传递到产生像表名:将表名称设置为Web数据库的变量?

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

,但明白问号只能代替literals使用是有没有解决这个办法吗?

回答

0

不,没有办法参数化模式名称。如果您确实需要允许动态名称,则必须手动将它们编码为模式名称字面值。

模式名字文字的ANSI SQL格式是用双引号把它们包围起来,用双加双引号替换字符串中的任何双引号字符。

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

那么,有一些原因的SQL参数的限制。

但我认为你正面临元编程问题,所以请查看StringTemplate

StringTemplate,它不要强迫你独占使用它。它只是一个用于任何目的的String模板语言。

不幸的是,StringTemplate不支持JavaScript,但我认为它的设计哲学仍然值得一提。

相关问题