将表名设置为Web数据库的变量?

时间:2010-11-02 20:26:40

标签: javascript sql database html5

我正在编写一个函数,该函数将位于一个在Web DB中创建表的外部文件中。这一切都是使用Javascript和HTML 5本地数据库完成的。我想传入一个变量来生成表名,如:

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

但要明白问号只能代替literals来解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

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

模式名称文字的ANSI SQL格式是用双引号括起来,并用双引号替换字符串中的任何双引号字符。

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

答案 1 :(得分:0)

嗯,sql参数限制有一些原因。

但我认为您正面临元编程问题,因此请查看StringTemplate

使用StringTemplate,它不会强迫您专门使用它。它只是一种用于任何目的的String模板语言。

不幸的是,StringTemplate不支持JavaScript,但我认为它的设计理念仍值得知道。