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 更新的双引号的主要内容,如果未能解决你的问题,请参考以下文章

sql server 如何去除双引号

vba 如何去掉返回结果两端的双引号?

存储过程中执行sql语句时如何转义双引号?

删除 Presto SQL 兼容数据库 (AWS Athena) 中数据中的双引号?

PostgreSQL的SQL语句中的双引号引发的问题

使用 R 中的 sqlQuery 处理 SQL select 语句中的双引号