2013-10-06 30 views
0

任何人有什麼想法?我在bash收到此錯誤信息......嘗試通過Ruby向SQLite插入行時出現「語法錯誤,意外的tIDENTIFIER ...」

insert_code_sam.rb:31: syntax error, unexpected tIDENTIFIER, expecting ')' 
    "INSERT INTO index1 (name) VALUES ("test1");" 
              ^
insert_code_sam.rb:32: syntax error, unexpected ')', expecting end-of-input 

在一個單一的文件insert_code_sam.rb,我試圖創建一個新的數據庫,創建兩個表,並插入一個測試一行。 SQlite表得到創建沒有問題,但我似乎無法插入行。

require "sqlite3" 

db = SQLite3::Database.new("new_database.db") 

db.execute( 
    "CREATE TABLE index1 (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name TEXT, 
    tagline TEXT, 
    blurb TEXT, 
    photo_url TEXT);" 
) 

db.execute( 
    "CREATE TABLE student_profile (
    id INTEGER PRIMARY KEY AUTOINCREMENT, 
    name_id INTEGER, 
    thumbnail_url TEXT, 
    background_url TEXT, 
    quote TEXT, 
    bio TEXT, 
    education TEXT, 
    work TEXT, 
    github TEXT, 
    treehouse TEXT, 
    codeschool TEXT, 
    coderwall TEXT);" 
) 

    db.execute(
    "INSERT INTO index1 (name) VALUES ("test1");" 
) 

回答

0

你過早地結束字符串 - 你的代碼是無效的Ruby語法。 SQLite expects single quoted strings, anyway。解決的方法是使用單引號的VALUES:如果

db.execute(
    "INSERT INTO index1 (name) VALUES ('test1');" 
) 
+0

謝謝。與奧雅納的答案相同,但我會接受你的,因爲你已經提供了一個解釋(爲未來的用戶)。 – SamTalks

1
db.execute(
    "INSERT INTO index1 (name) VALUES ('test1');" 
) 
+0

謝謝!指出時很簡單。 – SamTalks

1

替代方式,你想用""分隔符:

db.execute(
    "INSERT INTO index1 (name) VALUES (\"test1\");" 
) 
+0

你是說這比一般的雙引號單引號更好嗎? – SamTalks

+0

在Ruby中,用''''和''''分隔的字符串存在很大的差異。所以如果你使用''',那麼你需要使用'\\'來轉義它。 –

相關問題