2012-03-04 11 views
5

Hola siguiente El código da un error de sintaxis. No sé cómo solucionar el problema.Sqlite "Actualización" C# Error de sintaxis

El error

{ "error SQLite \ r \ Nnear \" myText \ ": error de sintaxis"}

Mi Código

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(); 
+2

Para evitar este tipo de errores (y las inyecciones de SQL), debe utilizar los parámetros de consulta, no crear la cadena de comando SQL de forma dinámica. – svick

+2

@ user1248067: * Por favor * no use la respuesta aceptada tal como está. Debería * realmente, realmente * usar SQL parametrizado. –

Respuesta

21

Otros han sugerido formas alternativas de construir el SQL, pero no debería incluir los valores en el SQL en absoluto. Debería utilizar una consulta parametrizada, que evita el SQL injection attacks, entre otras cosas.

No tengo muy claro cuál es el controlador que está utilizando, pero suponiendo que sea el de Devart.com, la documentación para SQLiteCommand.Parameters proporciona un buen ejemplo de cómo hacerlo. En su caso, el código sería algo así como:

+0

No estoy seguro de si es un problema de versión; pero tuve que usar "DbType.String" en lugar de "SqLiteType.Text". Estoy usando SQLite versión 1.0.99 – sapbucket

+0

@sapbucket: Mmm ... editaré. –

5

se ha perdido el ' 2 veces

Pruebe esto:

command.CommandText = ("update Example set Info ='" + textBox2.Text + "', Text ='"+textBox3.Text + "' where ID ='" + textBox1.Text +"'"); 
Cuestiones relacionadas