我希望在使用Ruby和SQLite3创建表时将表名作为变量传递。
这是我到目前为止所做的:
$db.execute %q{
CREATE TABLE @tableName (
id integer primary key,
term varchar(100),
meaning varchar(100))
}
$ db定义为
$db = SQLite3::Database.new("test.db")
$db.results_as_hash = true
@tableName是用户输入。我可以看到它不喜欢@tableName,但我不知道如何解决这个问题。
答案 0 :(得分:3)
%q是单引号替代,插值在单引号字符串中不起作用。
同样在ruby插值中使用#{}进行,就像在"Welcome #{name}"
中一样。
我会尝试:
$db.execute <<-SQL
CREATE TABLE #{@tableName} (
id integer primary key,
term varchar(100),
meaning varchar(100)
)
SQL
答案 1 :(得分:1)
只需使用普通字符串插值:
$db.execute %Q{
CREATE TABLE #{@tableName} (
id integer primary key,
term varchar(100),
meaning varchar(100))
}
请注意,我已将%q{}
引号切换为%Q{}
以使插值生效。