起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2147|回复: 5

[处理中1] baasData的setFilter问题

[复制链接]

32

主题

116

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
发表于 2016-9-12 14:13:38 | 显示全部楼层 |阅读模式
本帖最后由 qq883936 于 2016-9-12 14:17 编辑

数据库字段a是字符串类型,当
baasData.setFilter("filter0","a="+str)
str字符串(str="oCQahwrICrJGZahypIP7c7kb-J1o")含减号时,baasData.refreshData()会出错。
后台错误信息如下:
Caused by: com.justep.baas.data.sql.SQLException: SQL执行失败,SQL:SELECT * FROM wechat WHERE ((openid = oCQahwrICrJGZahypIP7c7kb - J1o ) )  LIMIT 0,20
        at com.justep.baas.data.DataUtils.queryData(Unknown Source)
        at com.justep.baas.action.CRUD.query(Unknown Source)
        at weixin.Huzhu__do.queryWechat(Huzhu__do.java:1963)
        ... 20 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'oCQahwrICrJGZahypIP7c7kb' in 'where clause'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
        at com.mysql.jdbc.Util.getInstance(Util.java:383)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)

32

主题

116

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2016-9-12 14:18:29 | 显示全部楼层
看提示,会解析成字段a减去字段b了
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-12 16:07:06 | 显示全部楼层
这个Str 是怎么定义的?数据库执行错误,程序是误吧 str中- 当做的减号去做了运算才会报错的对吗? 处理方法,让他看作一个完整的字符串,或者使用转义字符,试一下
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

32

主题

116

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2016-9-12 21:03:29 | 显示全部楼层
本帖最后由 qq883936 于 2016-9-12 21:05 编辑
闰土 发表于 2016-9-12 16:07
这个Str 是怎么定义的?数据库执行错误,程序是误吧 str中- 当做的减号去做了运算才会报错的对吗? 处理方 ...

是这样定义的               
this.comp("baasWechatData").setFilter("filter0", "openid="+event.params.openid);
this.comp("baasWechatData").refreshData();
我可以将event.params.openid的减号将转义,但还有哪些字符需要处理的吗?
回复 支持 反对

使用道具 举报

1

主题

3232

帖子

1174

积分

金牌会员

Rank: 6Rank: 6

积分
1174
QQ
发表于 2016-9-13 09:52:29 | 显示全部楼层
qq883936 发表于 2016-9-12 21:03
是这样定义的               
this.comp("baasWechatData").setFilter("filter0", "openid="+event.param ...

这就还需要运行以啊,看看那控制台日志,会不会报错了
在问题解决后,希望大家可以吧解决方法也分享一下,这样可以让更多的X5开发者共同进步,谢谢大家的知识共享
回复 支持 反对

使用道具 举报

32

主题

116

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2016-9-13 19:57:59 | 显示全部楼层
this.comp("baasWechatData").setFilter("filter0", "openid="+event.params.openid);
this.comp("baasWechatData").refreshData();
当event.params.openid=oCQahwrICrJGZahypIP7c7kb-J1o时
后台报以下错误:

Caused by: com.justep.baas.data.sql.SQLException: SQL执行失败,SQL:SELECT * FROM wechat WHERE ((openid = oCQahwrICrJGZahypIP7c7kb - J1o ) )  LIMIT 0,20
        at com.justep.baas.data.DataUtils.queryData(Unknown Source)
        at com.justep.baas.action.CRUD.query(Unknown Source)
        at weixin.Huzhu__do.queryWechat(Huzhu__do.java:1963)
        ... 20 more
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'oCQahwrICrJGZahypIP7c7kb' in 'where clause'
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:400)
        at com.mysql.jdbc.Util.getInstance(Util.java:383)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:980)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3847)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3783)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-5 09:21 , Processed in 0.061867 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表