我正在尝试使用OleDb和.Net4.5更新数据库。
我的更新工作正常,即使我在字段上使用简单引用,但是,当我在字段上输入双引号时,oledb会因为此双引号而引发异常。
以下是请求的示例:
string strRequest = "update " + strNomTable.Trim() + " set "
+ "evenotes = " + '"' + m_strNote.ToString().Trim() + '"'
+ " where eveNum = " + '"' + strEvtNumeroString.Trim() + '"';
你知道我怎么能避免简单和双引号? 注意:我尝试使用SQL参数化更新,但我的DataBase似乎不支持这一点。
非常感谢,
致以最诚挚的问候,
Nixeus
答案 0 :(得分:1)
我想到了一些选择。由于我不知道您使用的是哪种数据库,我只是猜测:
"'" + m_strNote.ToString().Trim() + "'"
而不是'"' + m_strNote.ToString().Trim() + '"'
"'" + m_strNote.ToString().Trim().Replace("'", "''") + "'"
如果将选项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());