Параметризованный оператор обновления в 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

Другие вопросы по тегам