2014-01-15 3 views
-1

I`m с помощью этого кода для поиска числа в таблице SQLiteC# I`m пытается найти имя в таблице SQLite

String insSQL2 = "select * from Produtos where nome =" + txtBuscaNome.Text; 

, но когда я пытаюсь использовать его для поиска name Я получаю сообщение об ошибке. Зачем?

Ошибки я получаю

System.Data.SQLite.SQLiteException был необработанным

SQL логической ошибки или отсутствуют база данных

нет такой колонки: "текст я напечатал"

+0

Не думаете ли вы, что говорит нам, что была ошибка поможет нам диагностировать проблему? –

+0

Я хотел бы прислушаться к приведенному ниже совету Саймона и исследовать параметризованные запросы для защиты вашего кода от атак SQL-инъекций. –

+0

Возможно, я попробую это в будущем, но теперь я изучаю основы C# и sqlite, и это всего лишь небольшая программа для контроля моих монет ... Также, если у вас есть хороший базовый пример более безопасного способ использовать sqlite в C#, я бы оценил. – Aman

ответ

7

Игнорируя тот факт, что ваш код полностью открыт для SQL Injection, вам нужно заключить строки в одинарные кавычки в SQL.

Так что ваш код должен быть таким:

String insSQL2 = 
    "select * from Produtos where nome = '" + txtBuscaNome.Text + "'"; 
//          ^^ here     ^^ here 
+0

Спасибо большое! Я буду единственным, кто пользуется этим, поэтому безопасность не вызывает беспокойства, но всегда полезно учиться спонтанному новому. – Aman