Sql 更新的双引号
Posted
技术标签:
【中文标题】Sql 更新的双引号【英文标题】:Double quotes with Sql Update 【发布时间】:2013-04-29 13:12:02 【问题描述】:我正在尝试使用 OleDb 和 .Net4.5 更新数据库。
我的更新运行良好,即使我在字段上使用简单引号,但是当我在字段上输入双引号时,由于这个双引号,oledb 会引发异常。
这是一个请求示例:
string strRequest = "update " + strNomTable.Trim() + " set "
+ "evenotes = " + '"' + m_strNote.ToString().Trim() + '"'
+ " where eveNum = " + '"' + strEvtNumeroString.Trim() + '"';
您知道如何避免使用单引号和双引号吗? 注意:我尝试使用 SQL 参数化更新,但我的数据库似乎不支持这一点。
非常感谢,
最好的问候,
尼克斯
【问题讨论】:
你用的是什么数据库? 带有 VFP OleDb 的 Visual Fox Pro 数据库(DBF 文件)。 提示一下,String.Format() 可以帮助提高查询字符串的可读性。 strRequest 似乎也评估为无效语法。 where 前面有个逗号 是的,这是我在网站上复制/粘贴的副本。 ;-) 【参考方案1】:我想到了几个选项。由于我不知道您使用的是哪种数据库,我只是猜测:
-
使用参数。我知道你已经尝试过了,但我建议你再试一次。如果失败,请尝试以下操作:
删除“where”的逗号(一行!)。
将 SQL 语句中的所有双引号更改为单引号。文字文本应该是
"'" + 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());
【讨论】:
我尝试使用参数化,但我有一个糟糕的“语法错误”异常:\ 这就是我为您提供另外两个选择的原因。但是也许您可以创建另一个问题,发布带有参数的代码并询问是否有人看到错误。很多人放弃了正确的轻松方法,并偏离了正确的道路。 我已经要求参数化 whitout 成功了!此外,我也尝试了带有 sql 错误的第二个解决方案(.replace()):( 1) 您在哪里提出问题(链接?)和 2) 错误是什么? 链接在这里:***.com/questions/16384635/…以上是关于Sql 更新的双引号的主要内容,如果未能解决你的问题,请参考以下文章