C#中的参数化更新语句 - 在数据库中存储RTF

时间:2016-08-18 08:18:39

标签: c# sql rtf dbf

我想将一些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 个答案:

答案 0 :(得分: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