1

我用c#写了这行来操作microsoft access数据库

OleDbCommand sComm = new OleDbCommand
  ("Update TableToBeImport set TextDefault = '" + resxValue + "' 
    WHERE ControlName = '" + resxKey + "'" , c);

resxValue 并且resxKey 都是字符串变量。

当两个字符串变量很简单时,例如“abc”,“xyz”,一切正常,但是当一个字符串变量变得复杂时,在我的情况下,像这样:

提示:

  1. 要修复费率计划和 rpt 错误,请使用“重新处理”

  2. 要修复运营商、中继组、交易员错误,请使用“删除并重新插入”

程序抛出一个错误,当我进行调试时,sComm.CommandText 是这种形式:

更新 TableToBeImport 设置 TextDefault = 'TIPS: \r\n1. 要修复速率计划和 rpt 错误,请使用“重新处理”\r\n2。要修复运营商、中继组、贸易商错误,请使用“删除并重新插入” WHERE Con​​trolName = 'frmCDRQuery.label7.Text'

我知道在 c# 中,我可以@在字符串变量之前使用,因此其中的任何转义字符都将被忽略。但是在访问中,我怎样才能得到相同的结果?

4

1 回答 1

1

这对你有用吗?

var resxValue = ""; // obviously this will be whatever the type and value that is required
var resxKey = ""; // obviously this will be whatever the type and value that is required

// I am assuming here that you are already programming with a `using` statement
using (OleDbConnection c = new OleDbConnection(""))
{
    using (OleDbCommand sComm = new OleDbCommand("UPDATE TableToBeImport SET TextDefault = @p0 WHERE ControlName = @p1", c))
    {
        sComm.Parameters.Add(new OleDbParameter("@p0", resxValue));
        sComm.Parameters.Add(new OleDbParameter("@p1", resxKey));

        // rest of your code here E.G., sComm.ExecuteNonQuery();
    }
}
于 2013-03-10T07:36:58.250 回答