Sql语句中 包含了单引号',执行时会出错,应该如何解决?

kpken 2003-07-30 06:35:10
环境:
后台用access数据库,用ADO.NET访问。
源代码:
string strSql;
strSql = "update user set name = 'a'' where id = 1

MyCommand.CommandText = strSql;
MyCommand.ExecuteNonQuery();

说明:
name为string型,界面输入值为a',就是它引起出错的。

出错信息如下:
System.Data.OleDb.OleDbException: 语法错误 (操作符丢失) 在查询表达式 ''a'' 中。
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
...全文
392 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
kpken 2003-07-31
  • 打赏
  • 举报
回复
谢谢,以上方法都可以,我采用了参数的方法
happyno7 2003-07-30
  • 打赏
  • 举报
回复
try:
strSql = "update user set name = 'a''' where id = 1
buaawjh 2003-07-30
  • 打赏
  • 举报
回复
用转义字符
ameng_2002 2003-07-30
  • 打赏
  • 举报
回复
也可以用参数
string strSql;
strSql = "update user set name = @name where id = 1";
MyCommand.CommandText = strSql;
myCommand.Parameters.Add("@name",OleDbType.VarChar,20);
myCommand.Parameters["@name"].Value="a'";
MyCommand.ExecuteNonQuery();
panyee 2003-07-30
  • 打赏
  • 举报
回复
两个引号就可以了
senzz 2003-07-30
  • 打赏
  • 举报
回复
用repalce(str,"'","''")函数试试 ,str 是你要输入得值
ruyedian 2003-07-30
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1765/1765073.xml?temp=.6721308
kpken 2003-07-30
  • 打赏
  • 举报
回复
我初步估计是strSql中 'a''的问题,如何让他认为第一个引号是值而不是关键字。
相关推荐
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2003-07-30 06:35
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。