使用Sql Update双引号

时间:2013-05-05 18:18:29

标签: c# sql oledb quotes visual-foxpro

我正在尝试使用OleDb和.Net4.5更新数据库。

我的更新工作正常,即使我在字段上使用简单引用,但是,当我在字段上输入双引号时,oledb会因为此双引号而引发异常。

以下是请求的示例:

string strRequest = "update " + strNomTable.Trim() + " set "
+ "evenotes = " + '"' + m_strNote.ToString().Trim() + '"' 
+ " where eveNum = " + '"' + strEvtNumeroString.Trim() + '"';

你知道我怎么能避免简单和双引号? 注意:我尝试使用SQL参数化更新,但我的DataBase似乎不支持这一点。

非常感谢,

致以最诚挚的问候,

Nixeus

1 个答案:

答案 0 :(得分:1)

我想到了一些选择。由于我不知道您使用的是哪种数据库,我只是猜测:

  1. 使用参数。我知道你已经尝试过,但我建议再试一次。如果失败,请尝试以下方法:
  2. 删除“where”的逗号(一行!)。
  3. 将SQL语句中的所有双引号更改为单引号。文字文字应为"'" + m_strNote.ToString().Trim() + "'"而不是'"' + m_strNote.ToString().Trim() + '"'
  4. 使用双引号('')替换值中的所有单引号('):"'" + m_strNote.ToString().Trim().Replace("'", "''") + "'"
  5. 如果将选项2组合到4,您将得到:

    string strRequest = "update " + strNomTable.Trim() + " set "
    + "evenotes = '" + m_strNote.ToString().Trim().Replace("'", "''") + "' "
    + "where eveNum = '" + strEvtNumeroString.Trim().Replace("'", "''") + "'";
    

    Visual Fox Pro数据库和OleDbParameters

    您可以使用OleDbParameters。使用@开始名称。所以:

    OleDbCommand command = new OleDbCommand(
        "update " + strNomTable.Trim() + " set "
        + "evenotes = @evenotes "
        + "where eveNum = @eveNum");
    command.Parameters.AddWithValue("@evenotes", m_strNote.ToString().Trim());
    command.Parameters.AddWithValue("@eveNum", strEvtNumeroString.Trim());