#sql #ruby #shoes
#sql #ruby #Туфли
Вопрос:
В чем ошибка?
Если запрос на жестко запрограммированный ‘test’ вместо @edit.text, то выполняется успешно, но если используется переменная, то запрос завершается неудачей.
require 'sqlite3'
Shoes.app do
db = SQLite3::Database.new("test.db")
db.execute("create table t1 ( one VARCHAR(30), two INTEGER )")
db.execute("insert into t1 ( one, two ) values ('test', 55)")
@edit = edit_line
button 'Search' do
db.execute("select * from t1 where one = ?", @edit.text) do |rows|
@test_out.text = rows
end
end
@test_out = para ''
end
PS После некоторых экспериментов я решил этот вопрос таким образом:
button 'Search' do
text = @edit.text.force_encoding("UTF-8")
db.execute("select * from t1 where one = ?", text) do |rows|
@test_out.text = rows
end
end
но мой файл в кодировке UTF-8
или следующим образом:
button 'Search' do
text = ''
@edit.text.each_char { |ch| text << ch }
db.execute("select * from t1 where one = ?", text) do |rows|
@test_out.text = rows
end
end
почему такое странное поведение?
Комментарии:
1. в этом примере, если вы введете в edit_line ‘test’, мы должны получить вывод ‘test55’, но, к сожалению, ничего не отображается. Почему?
2. есть ли какие-либо ошибки при нажатии
alt /
?3. Нет, нет. Я не знаю, куда копать.
Ответ №1:
Это работает
db.execute("select * from t1 where one = ?", "#{@edit.text}") do |rows|
@test_out.text = rows
end
но это действительно, действительно странно. Я попытаюсь разобраться.