2013-07-26 2 views
0

Я пытаюсь получить доступ к базовой базе данных SQLite с Ruby, но продолжаю получать странную ошибку. Драгоценные камни установить без ошибок, и я имею правильную ошибку, но когда я пытаюсь на самом деле запустить код, я получаю эту ошибку:Инициализация базы данных Ruby SQLite

/home/--/.rvm/gems/ruby-2.0.0-p195/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `initialize': near ".": syntax error (SQLite3::SQLException) 
from /home/mastelj/.rvm/gems/ruby-2.0.0-p195/gems/sqlite3-1.3.7/lib/sqlite3/database.rb:91:in `new' 
from /home/mastelj/.rvm/gems/ruby-2.0.0-p195/gems/sqlite3-1.3.7/lib/sqlite3/database.¦rb:91:in `prepare' 
from /home/mastelj/.rvm/gems/ruby-2.0.0-p195/gems/sqlite3-1.3.7/lib/sqlite3/database. rb:134:in `execute' 
^G Get Hel^O WriteOu^R Read Fi^Y Prev Pa^K Cut Tex^C Cur Pos from to_sqlite.rb:5:in `<main>' 

Программы

require 'sqlite3' 

db = SQLite3::Database.open('test.db') 
rows = db.execute(".tabes") 

for i in 0..rows.size-1 
    puts rows[i] 
end 

Любой идею относительно того, что может привести к этому ?

ответ

1

Try:

db = SQLite3::Database.open('test.db') 
rows = db.execute("SELECT * FROM sqlite_master WHERE type='table';") 
# If you want just the table names do: 
rows = db.execute("SELECT name FROM sqlite_master WHERE type='table';") 

Смотрите больше на столе sqlite_master здесь: http://www.sqlite.org/faq.html.

1

Что должно делать команда SQL .tabes?

Если вы используете правильный SQL, вы можете использовать db.execute:

require 'sqlite3' 

db = SQLite3::Database.open('test.db') 
rows = db.execute("CREATE TABLE [test] ( [test] CHAR);") 

Если вы хотите, чтобы получить список таблиц, вы можете выбрать с sqlite_master.

require 'sqlite3' 

db = SQLite3::Database.open('test.db') 
db.execute("CREATE TABLE [test] ( [test] CHAR);") 
rows = db.execute("SELECT * FROM sqlite_master WHERE type='table';") 
rows.each{|tab| 
    p tab 
} 

Но я бы рекомендовал набор инструментов базы данных, например. Продолжение:

require 'sequel' 
DB = Sequel.sqlite('test.db') 

DB.create_table(:test){ 
    String :content 
} 

puts DB.tables 
Смежные вопросы