DB関連のコードを実行すると、エラーは表示されず、データベースがいっぱいになります。
私はこのコードでのようselect
を追加する場合:
require 'sqlite3'
begin
db = SQLite3::Database.open "test.db"
db.execute "CREATE TABLE IF NOT EXISTS Entries(Id INTEGER PRIMARY KEY AUTOINCREMENT, Searched TEXT, Place TEXT, Number BLOB)"
db.execute "INSERT INTO Entries(Searched) VALUES ('Is')"
db.execute "INSERT INTO Entries(Place) VALUES ('This')"
db.execute "INSERT INTO Entries(Number) VALUES ('Working')"
(db.execute "Select * from Entries").each{|dataset|
p dataset
}
rescue SQLite3::Exception => e
puts "Exception occurred"
puts e
#ensure
# stm.close if stm
# db.close if db
end
その後、私が手:
[1, "Is", nil, nil]
[2, nil, "This", nil]
[3, nil, nil, "Working"]
はどのようにしてDBにエントリがないことを、見ましたか?
右にtest.db
を確認してもよろしいですか?実際のディレクトリはp Dir.pwd
で確認できます。
私はあなたのインサート・コマンドの動作を取る場合は、変数に値が
require 'sqlite3'
File.delete('test.db') #Delete previous result and start with initial example.
@incoming = 'in'
@best_place_fmt = 'fm'
@phonenumber = 123456789
begin
db = SQLite3::Database.open "test.db"
db.execute "CREATE TABLE IF NOT EXISTS Entries(Id INTEGER PRIMARY KEY AUTOINCREMENT, Searched TEXT, Place TEXT, Number BLOB)"
db.execute("INSERT INTO Entries (Searched, Place, Number) VALUES(?,?,?)", @incoming, @best_place_fmt, @phonenumber)
(db.execute "Select * from Entries").each{|dataset|
p dataset
}
rescue SQLite3::Exception => e
puts "Exception occurred"
puts e
#ensure
# stm.close if stm
# db.close if db
エンド
マイ結果:
例問題の修正後:
[1, "in", "fm", 123456789]
あなたはORMの使用について今までに疑問を呈していましたか?ただ、あなたの続編と例下記印象与える:
@incoming = 'in'
@best_place_fmt = 'fm'
@phonenumber = 123456789
require 'sequel'
db = Sequel.sqlite("test.db") #Here you could use also another DB
db.tables.each{|table| db.drop_table(table)}
db.create_table :entries2 do
primary_key :id
field :searched, :type => :text
field :place, :type => :text
field :number, :type => :blob
end
db[:entries2].insert(nil,@incoming, @best_place_fmt, @phonenumber)
puts db[:entries2].all #{:id=>1, :searched=>"in", :place=>"fm", :number=>"123456789"}
こんにちは、およびSOを歓迎する - それはtwilioのものは、あなたが直面している問題と本質的に無関係であるように思える、そうだろうか?もしそうなら、コードのDBビットだけに答えをトリミングすることで、回答者の人生をより楽にすることができます(そして、役に立つ回答になるでしょう)。 – Jeff
いつSQLiteコードが実行されると思いますか?現在のディレクトリが何時になると思いますか? 'test.db'は作成されていますか? 'test.db'のパーミッションは何ですか? –
SQLiteのCLIに貼り付けるとSQLが動作するのですか?https://www.sqlite.org/cli.html – Kris