Sqlite "Обновление" C # Синтаксическая Ошибка - PullRequest
6 голосов
/ 04 марта 2012

Привет, следующий код дает синтаксическую ошибку. Я не знаю, как решить проблему.

Ошибка

{"Ошибка SQLite \ r \ nnear \" Mytext\ ": синтаксическая ошибка"}

Мой код

string dataSource = "Database.s3db";
SQLiteConnection connection = new SQLiteConnection();
connection.ConnectionString = "Data Source=" + dataSource;
connection.Open();
SQLiteCommand command = new SQLiteCommand(connection);
command.CommandText = ("update Example set Info ='" + textBox2.Text + ", Text ='"+textBox3.Text + "where ID ='" + textBox1.Text +"'");
command.ExecuteNonQuery();

1 Ответ

23 голосов
/ 04 марта 2012

Другие предлагали альтернативные способы построения SQL, но вам вообще не следует включать значения в SQL.Вам следует использовать параметризованный запрос, который среди прочего позволяет избежать атак SQL-инъекций .

Мне не сразу понятно, какой драйвер вы используете, но при условии, что это драйвер Devart.com.документация для SQLiteCommand.Parameters дает хороший пример того, как это сделать.В вашем случае код будет выглядеть примерно так:

string dataSource = "Database.s3db";
using (SQLiteConnection connection = new SQLiteConnection())
{
    connection.ConnectionString = "Data Source=" + dataSource;
    connection.Open();
    using (SQLiteCommand command = new SQLiteCommand(connection))
    {
        command.CommandText =
            "update Example set Info = :info, Text = :text where ID=:id";
        command.Parameters.Add("info", DbType.String).Value = textBox2.Text; 
        command.Parameters.Add("text", DbType.String).Value = textBox3.Text; 
        command.Parameters.Add("id", DbType.String).Value = textBox1.Text; 
        command.ExecuteNonQuery();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...