dポイントプレゼントキャンペーン実施中!

Ruby 構文で三つのテーブルを作りたいのですが
この構文だと、どうしても最後のendのところで
エラーが出てしまいます。

どうすれば正常にテーブルを作成できるのでしょうか?
訂正箇所を教えてください。

require "sqlite3"
db = SQLite3::Database.new("database.db")
sql = "create table Sales (商品コード integer primary key, 商品名 text, メーカー nune)"
db.execute(sql)
puts "Itemテーブルを作成しました。"
db.transaction do
sql = "insert into Sales values (?, ?, ?)"
db.execute(sql, 1101, "鉛筆", "A3")
db.execute(sql, 1102, "クッキー", "B4")
db.execute(sql, 1103, "ケース", "C5")

sql = "create table Items (:メーカーコード nune, :カテゴリー text, :商品名 text)"
db.execute(sql)
puts "Itemテーブルを作成しました。"
db.transaction do
sql = "insert into Items values (?, ?, ?)"
db.execute(sql, "A3", "文房具", "鉛筆")
db.execute(sql, "B4", "食品", "クッキー")
db.execute(sql, "C5", "プラスチック", "ケース")

sql = "create table Order (:商品コード integer primary key, :商品名 text, :商品番号 integer, :メーカー nune)"
db.execute(sql)
puts "Orderテーブルを作成しました。"
db.transaction do
sql = "insert into Order values (?, ?, ?)"
db.execute(sql, 1101, "鉛筆", "1010", "A3")
db.execute(sql, 1102, "クッキー", "2010", "B4")
db.execute(sql, 1103, "ケース", "3010", "C5")

end
db.execute("select * from Sales") do | row |
db.execute("select * from Items") do | row |
db.execute("select * from Order") do | row |

puts row.join("\t")
end

db.close

質問者からの補足コメント

A 回答 (3件)

doとendの対応がめちゃくちゃですよ。


とりあえず、動くようにしておきました。
---------------------------------------------
require "sqlite3"
db = SQLite3::Database.new("database.db")
sql = "create table Sales (商品コード integer primary key, 商品名 text, メーカー nune)"
db.execute(sql)
puts "Salesテーブルを作成しました。"
db.transaction do
sql = "insert into Sales values (?, ?, ?)"
db.execute(sql, 1101, "鉛筆", "A3")
db.execute(sql, 1102, "クッキー", "B4")
db.execute(sql, 1103, "ケース", "C5")
end
sql = "create table Items (メーカーコード nune, カテゴリー text, 商品名 text)"
db.execute(sql)
puts "Itemテーブルを作成しました。"
db.transaction do
sql = "insert into Items values (?, ?, ?)"
db.execute(sql, "A3", "文房具", "鉛筆")
db.execute(sql, "B4", "食品", "クッキー")
db.execute(sql, "C5", "プラスチック", "ケース")
end
sql = "create table Orders (商品コード integer primary key, 商品名 text, 商品番号 integer, メーカー nune)"
db.execute(sql)
puts "Orderテーブルを作成しました。"
db.transaction do
sql = "insert into Orders values (?, ?, ?, ?)"
db.execute(sql, 1101, "鉛筆", "1010", "A3")
db.execute(sql, 1102, "クッキー", "2010", "B4")
db.execute(sql, 1103, "ケース", "3010", "C5")
end
db.execute("select * from Sales") do | row |
puts row.join("\t")
end
db.execute("select * from Items") do | row |
puts row.join("\t")
end
db.execute("select * from Orders") do | row |
puts row.join("\t")
end

db.close
---------------------------------------
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2019/01/26 10:35

今後 Ruby を使って自力で何とかしていこうと思っているのであれば,


エラーメッセージの意味を理解する
ことは重要です.

そのエラーメッセージがなにを言っているのかわかりますか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2019/01/26 10:35

どういう「エラー」が出るんでしょうか? メッセージはないの?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2019/01/26 10:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!