NutzCN Logo
问答 executeSql方法执行sql 字段内容带@字符报错
发布于 1369天前 作者 Wordsdonotread 1170 次浏览 复制 上一个帖子 下一个帖子
标签:

代码段

dao.executeSql(Sqls.create("update nmpa set html = @html where id=@id ").setParam("html", ele.html()).setParam("id", rec.getInt("id")).toString());

异常:

org.nutz.dao.DaoException: !Nutz SQL Error: 'update nmpa set html = '<p></p>
电子邮箱:mdct?.gov.cn(邮件主题请注明“2020年行业标准制修订项目反馈意见”)' where id=11'
CaseMessage=Parameter index out of range (1 > number of parameters, which is 0).

异常中把一些垃圾html代码删除了

2 回复

仔细查看文档后,问题已解决。
Sql 的逃逸字符
有些时候,有的朋友给出的 SQL 包括特殊字符 '@' 或者 '$',比如:
Sql sql = Sqls.create("INSERT INTO t_usr (name,email) VALUES('XiaoMing','xiaoming@163.com');"
这个时候,因为有关键字 '@',所以 SQL 不能被正确解析,因为你的本意是给一个 'xiaoming@163.com' 这个字符串。但是 Nutz.Dao 却认为这个是个语句参数。
这时候你可以使用逃逸字符:
Sql sql = Sqls.create("INSERT INTO t_usr (name,email) VALUES('XiaoMing','xiaoming@@163.com');"

输入 "@@" 表示一个 '@'
输入 "$$" 表示一个 '$'

是因为你多写了个.toString()

添加回复
请先登陆
回到顶部