SQLite3在创建表时使用变量?

发布于 2024-11-05 17:42:09 字数 378 浏览 0 评论 0原文

我希望在使用 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,但我不知道如何解决这个问题。

I am hoping to pass a table name as a variable when I am creating a table with Ruby and in SQLite3.

Here is what I have so far:

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

$db is defined as

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

@tableName is user input. I can see that it doesn't like the @tableName, but I don't know how to work around that.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光病人 2024-11-12 17:42:09

%q 是单引号替代,插值在单引号字符串内不起作用。
同样,在 ruby​​ 中,插值是通过 #{} 完成的,如 “Welcome #{name}” 中所示。
我会尝试:

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

%q is a single quote alternative, interpolation does not work inside single quoted strings.
Also in ruby interpolation is done with #{}, like in "Welcome #{name}".
I would try:

$db.execute <<-SQL
  CREATE TABLE #{@tableName} (
    id integer primary key,
    term varchar(100),
    meaning varchar(100)
  )
SQL
美胚控场 2024-11-12 17:42:09

只需使用普通的字符串插值:

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

请注意,我将您的 %q{} 引用切换为 %Q{} 以使插值正常工作。

Just use normal string interpolation:

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

Note that I switched your %q{} quoting to %Q{} to get the interpolation to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文