SQLite3 используя переменную при создании таблицы? - PullRequest
0 голосов
/ 10 мая 2011

Я надеюсь передать имя таблицы в качестве переменной при создании таблицы с Ruby и в SQLite3.

Вот что у меня есть:

$db.execute %q{
  CREATE TABLE @tableName (
  id integer primary key,
  term varchar(100),
  meaning varchar(100))
}

$ дБ определяется как

$db = SQLite3::Database.new("test.db")
$db.results_as_hash = true

@ tableName - ввод пользователя. Я вижу, что ему не нравится @tableName, но я не знаю, как обойти это.

Ответы [ 2 ]

3 голосов
/ 10 мая 2011

% q является альтернативой в одинарных кавычках, интерполяция не работает внутри строк в одинарных кавычках. Также в ruby ​​интерполяция выполняется с # {}, как в "Welcome #{name}". Я бы попробовал:

$db.execute <<-SQL
  CREATE TABLE #{@tableName} (
    id integer primary key,
    term varchar(100),
    meaning varchar(100)
  )
SQL
1 голос
/ 10 мая 2011

Просто используйте обычную интерполяцию строк:

$db.execute %Q{
  CREATE TABLE #{@tableName} (
  id integer primary key,
  term varchar(100),
  meaning varchar(100))
}

Обратите внимание, что я переключил вашу цитату %q{} на %Q{}, чтобы заставить интерполяцию работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...