如何向DataTable插入包含单引号'的字符串?
解决DataTable插入含单引号字符串的问题
你遇到的错误是因为SQL里用单引号标记字符串边界,COTE D'IVOIRE中的单引号会被系统误判为字符串结束符,导致语法错误。下面是两种可行的解决办法:
方法一:转义单引号
在SQL语句里,把字符串中的单个单引号替换成两个连续的单引号,SQL引擎就会将其识别为字符串内部的单引号,而非边界符。修正后的SQL语句如下:
insert into mytable (ISO_COUNTRY_CODE, COUNTRY, REGION) values ('CI', 'COTE D''IVOIRE','EMEAR')
方法二:使用参数化查询(推荐)
手动转义不仅繁琐,还存在SQL注入风险,更安全可靠的方式是用参数化查询,让数据库驱动自动处理特殊字符。以C#为例,代码示例如下:
// 假设conn是已打开的数据库连接 string sql = "insert into mytable (ISO_COUNTRY_CODE, COUNTRY, REGION) values (@Code, @Country, @Region)"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.AddWithValue("@Code", "CI"); cmd.Parameters.AddWithValue("@Country", "COTE D'IVOIRE"); cmd.Parameters.AddWithValue("@Region", "EMEAR"); cmd.ExecuteNonQuery(); }
这种方式无需手动处理单引号,同时能有效避免SQL注入攻击,是生产环境中的首选方案。
内容的提问来源于stack exchange,提问作者A Dolegowski
相关产品推荐
相关产品推荐

