Параметризованный оператор обновления в C# - Хранение RTF в базе данных
Я хочу сохранить некоторый RTF-код в виде простого текста в моей базе данных.dbf fox-pro, но я получаю "Синтаксическую ошибку" в ExecuteNonQuery и не могу найти проблему.
Мой код:
String query1 = "UPDATE tb_benu SET be_sign = @signatur WHERE be_name = @sys_benutzer";
using (OleDbConnection dbfcon = new OleDbConnection("Provider=VFPOLEDB;Data Source=" + dataFolder))
{
OleDbCommand cmd = new OleDbCommand(query1, dbfcon);
cmd.Parameters.AddWithValue("@signatur", signatur);
cmd.Parameters.AddWithValue("@sys_benutzer", sys_benutzer);
dbfcon.Open();
cmd.ExecuteNonQuery();
dbfcon.Close();
}
Почему выдает синтаксическую ошибку? (даже если я проверю это с обычным текстом, а не RTF)
Если я использую простой запрос SQL, как это:
string query1 = "UPDATE tb_benu SET be_sign='" + signatur + "' WHERE be_name='" + sys_benutzer + "';";
OleDbCommand cmd = new OleDbCommand(query1, conn);
cmd.ExecuteNonQuery();
это работает для текстового содержимого моего RichTextBox, но не для RTF-кода.
1 ответ
Решение
OleDb не поддерживает именованные параметры в тексте команды sql, вместо этого используйте позиционный синтаксис
String query1 = "UPDATE tb_benu SET be_sign = ? WHERE be_name = ?";
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.parameters(v=vs.110).aspx