Задать имя таблицы в качестве переменной для веб-базы данных? - PullRequest
2 голосов
/ 02 ноября 2010

Я пишу функцию, которая будет находиться во внешнем файле, который создает таблицы в веб-БД.Все это делается с помощью локальных баз данных Javascript и HTML 5.Я хочу передать переменную, чтобы сгенерировать имя таблицы, например:

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

, но понимаю, что знак вопроса может использоваться только вместо литералов . Есть ли способ обойти это?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2010

Ну, есть несколько причин для ограничения параметров sql.

Но я думаю, что вы сталкиваетесь с проблемой метапрограммирования , поэтому посмотрите StringTemplate .

С StringTemplate это не заставляет вас использовать его исключительно.Это просто язык шаблонов String для любых целей.

К сожалению, StringTemplate не поддерживает JavaScript, но я думаю, что философия его дизайна все еще стоит знать.

0 голосов
/ 02 ноября 2010

Нет, нет возможности параметризовать имена схем.Если вам действительно нужно разрешить динамические имена, вам придется кодировать их в литерал имени схемы вручную.

Формат ANSI SQL для литералов имени схемы заключается в том, чтобы заключить их в двойные кавычки и заменить любыекавычка внутри строки с двойной кавычкой.

var txlit= '"'+tc.replace(/"/g, '""')+'"';
query= 'CREATE TABLE IF NOT EXISTS '+txlit+' (id INTEGER ...)';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...