sql查询字符串中的Android引号

标签 android sqlite

我想执行如下查询:

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 + "\"" ;

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

最佳答案

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

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

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

关于sql查询字符串中的Android引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296180/

相关文章:

android - 在应用更新中在 Google Play Core 中安装错误(-100)

android - SQLite 数据库、多线程、Android 上的锁和帐户同步

java - 如何检查在editText中插入的文本是否存在于SQLite数据库中,如果存在则返回一条消息,如果不存在则返回不同的消息

xcode - 如何在 XCode 4 的 i386 应用程序的 dylib 中使用 Sqlite?这种方法确实适用于 iPhone 应用程序

android - NDK API 引用文档?

java - 标准化进度条输入的 timeInMillis 差异

java - 如何在 Activity 之间共享点击处理程序

android - 在线性布局中将焦点从父级传递给子级

iphone - 从表和 sqlite 数据库中删除行

sqlite - 无法通过 ODBC 连接 Access 到 SQLite