当前位置:  开发笔记 > 数据库 > 正文

Android在sql查询字符串中引用

如何解决《Android在sql查询字符串中引用》经验,为你挑选了2个好方法。

我想执行如下查询:

uvalue = EditText( some user value );
p_query = "select * from mytable where name_field = '" +  uvalue + "'" ;
mDb.rawQuery( p_query, null );

如果用户在输入中输入单引号,则会崩溃.如果您将其更改为:

p_query = "select * from mytable where name_field = \"" +  uvalue + "\"" ;

如果用户在输入中输入双引号,它就会崩溃.当然,他们总是可以输入单引号和双引号.



1> Josef Pflege..:

您应该使用rawQuery方法的selectionArgs参数:

p_query = "select * from mytable where name_field = ?";
mDb.rawQuery(p_query, new String[] { uvalue });

这不仅可以解决您的报价问题,还可以减轻问题SQL Injection.


实际上,您应该使用查询参数.但是,如果需要,您还可以使用DatabaseUtils转义字符串.例如,DatabaseUtils.sqlEscapeString().这不是最好的方式,但它是可用的.如果您尝试将原始SQL语句传递给外部事物,则可能很有用.
我希望我能不止一次upmod这个!

2> 小智..:

DatabaseUtils.sqlEscapeString适合我.该字符串用单引号括起来,字符串中的单引号变为双引号.尝试在getContentResolver().query()中使用selectionArgs,但它根本不起作用.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有