2013-12-02 7 views
0

Этот код НЕ меняет данные в столбце fullname в таблице person, и он также не вызывает ошибок. я использовал переменную $editKey для извлечения записи для редактирования, поэтому он работает, как и планировалось:Обновление записи в SQLite?

def upDateRecord 
    getInputs 
    puts $editKey 
    puts $fullname 

    db = SQLite3::Database.open "ruby-test-02.db" 
    db.execute "UPDATE person SET fullname = $fullname WHERE ID = $editKey" 
rescue SQLite3::Exception => e 
    puts "Exception occured" 
    puts e 
ensure 
    db.close 

    puts $editKey 
    puts $fullname  
end 
+0

'db.execute 'UPDATE person SET fullname = # {$ fullname} WHERE ID = # {$ editKey}" 'должен работать –

+2

Ruby не является PHP. Возможно, вам захочется прочитать вступительную книгу о рубине (и ее обработку переменных в целом и в отношении интерполяции строк). Кроме того, в ruby ​​'$ foo' есть глобальная переменная (то, что вам никогда не придется использовать, за исключением особых ситуаций). –

+0

Кроме того, в Ruby переменные и методы записываются с использованием snake_case, а классы - CamelCase. Кроме того, изучите использование ORM, например [Sequel] (http://sequel.jeremyevans.net). Это делает жизнь намного проще. –

ответ

0

Sloved ..

Защиту upDateRecord путы "в upDateRecord" getInputs

db = SQLite3::Database.new "ruby-test-02.db" 
    stm = db.prepare "UPDATE person Set fullname=? WHERE ID=?"; stm.bind_param 1, $fullname; stm.bind_param 2, $editKey;stm.execute;stm.close 
    stm = db.prepare "UPDATE person Set sex=? WHERE ID=?"; stm.bind_param 1, $sex; stm.bind_param 2, $editKey;stm.execute;stm.close 
    stm = db.prepare "UPDATE person Set birth=? WHERE ID=?"; stm.bind_param 1, $birth; stm.bind_param 2, $editKey;stm.execute;stm.close 
    stm = db.prepare "UPDATE person Set death=? WHERE ID=?"; stm.bind_param 1, $death; stm.bind_param 2, $editKey;stm.execute;stm.close 

спасение SQLite3 :: Exception => e ставит «Исключено» ставит e обеспечивает db.close конец

Смежные вопросы