`
malong26
  • 浏览: 168985 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

当rawQuery遇上模糊查询

阅读更多
遇到一个好玩的事情,使用rawQuery方法模糊查询,代码这样
  
String sql = "select * from " + DBOpenHelper.PRODUCT_TABLE + " where name like '%?%' order by ? desc";
Cursor cursor = db.rawQuery(sql, new String[]{ name, orderBy });


老是报这个异常:
android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x220f28 at

看上去代码没有问题,其实是被外表忽悠了。'%?%'这里的?并没有当做一个占位符处理,而是对?进行了模糊查找,这样sql语句中只有一个占位符,而我的参数中有两个参数,造成了异常。

处理方法是将sql写成这样:
String sql = "select * from " + DBOpenHelper.PRODUCT_TABLE + " where name like '%"+ name +"%' order by ? desc";
Cursor cursor = db.rawQuery(sql, new String[]{ orderBy });

如此name不使用占位符,就不出现误处理情况了。
分享到:
评论

相关推荐

    android 模糊查询

    在Android中,我们可以使用`SQLiteQueryBuilder`或直接在`SQLiteDatabase`对象上调用`rawQuery()`方法来执行模糊查询。例如,要查询一个名为`Contacts`表中名字包含“张”的所有记录,可以编写如下SQL语句: ```sql...

    Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解

    使用 SQLiteDatabase 操作 SQLite 数据库 代码如下:/* Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除...

    android 数据库 小应用

    return db.rawQuery("select SUM(Money) as SumInCome from datas where Money>0",null); } public Cursor ExitsExpenditure() { SQLiteDatabase db = getReadableDatabase(); return db.rawQuery("select...

    SQLite基础

    - `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`: 当数据库版本发生变化时调用,用于升级表结构等。 2. **SQLiteDatabase**: 用于执行各种数据库操作,如插入、删除、更新和查询数据。 3. **...

    Android开发之数据库的分页查询代码

    在Android应用开发中,数据库是数据存储的重要方式,特别是在处理大量数据时,为了提高用户体验,分页查询就显得尤为重要。本篇文章将详细讲解如何在Android中实现数据库的分页查询功能,以高效、流畅地加载和展示...

    SQLite数据表查询

    `rawQuery()` 是Android中的SQLiteHelper类提供的一个方法,它直接接收一个SQL查询字符串和可选的绑定参数,返回一个Cursor对象,通过Cursor我们可以遍历查询结果。例如,如果我们想要查询名为`Users`的表中所有...

    Android实现查询数据库,把数据库内容显示到屏幕

    本教程将详细介绍如何在Android应用中查询SQLite数据库,并将查询结果展示到屏幕上。 首先,你需要创建一个SQLite数据库。在Android中,我们通常通过扩展`SQLiteOpenHelper`类来实现这个任务。`SQLiteOpenHelper`...

    Android 快捷查询源码.rar

    综上所述,这份"Android 快捷查询源码"涵盖了Android数据库操作的多个方面,包括数据库创建、查询优化、异步处理、数据共享等。通过深入研究这份源码,开发者可以更好地理解如何在Android环境中高效地管理数据,提升...

    Android下SQLite操作.zip

    最后,我们需要将查询结果展示在ListView上。这通常涉及到使用Adapter来连接ListView和数据源。创建一个自定义的Adapter,例如`CourseAdapter`,并将其与ListView绑定。在Adapter的构造函数中传入查询结果Cursor,...

    Android查询工具源代码.zip

    综上所述,"Android查询工具源代码.zip"提供了完整的查询工具实现,开发者可以学习到如何有效地与SQLite交互,构建ContentProvider,以及处理异步查询等关键技巧。此外,由于代码已经过修正,可以直接编译运行,这极...

    android本地读取数据库db文件查询本地归属地

    - 在`SQLiteOpenHelper`的子类中编写查询方法,例如`queryPhoneNumber(String phoneNumber)`,使用`rawQuery()`方法执行SQL查询,获取指定电话号码的归属地信息。 - SQL查询语句可能类似`SELECT * FROM Phone...

    应用源码之查询工具源代码.zip

    通过分析这些源码,我们可以了解如何在Android平台上构建一个实用的查询工具,同时也能够学习到JAVA ANDROID相关的编程技巧和设计模式。 首先,源码中的核心部分很可能包含了数据查询的相关逻辑。在Android中,数据...

    android搜索框

    本篇文章将详细讲解如何在Android中实现一个具有实时查询功能的搜索框,包括如何给EditText添加文本更改监听,以及如何在用户输入时使用模糊查询从数据库中检索数据并显示在ListView中。 首先,我们需要在布局文件...

    安卓SQLite数据库相关-移动查询系统-百纳铁路小助手.zip

    对于更复杂的查询,可以使用`rawQuery()`方法,它接受SQL查询字符串和参数数组,返回一个Cursor对象,可以遍历查询结果。 4. **Cursor**:Cursor是数据游标,代表查询结果集。通过Cursor,可以获取每一行数据,包括...

    SQlite数据库

    - `rawQuery()`方法用于执行SQL查询语句,返回一个Cursor对象,可以遍历查询结果。 - 示例:`Cursor cursor = db.rawQuery("SELECT * FROM table_name", null);` - 支持参数化查询,避免SQL注入风险,如:`String...

    插入、查询、修改操作数据库详细例子

    Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME, null); return res; } ``` 对于更新数据,我们可以创建一个`updateData()` 方法,使用`update()` 方法: ```java public int updateData(String name,...

    利用SQLiteOpenHelper实现SQLite数据的写入和查询

    在这个示例中,我们将深入探讨如何利用SQLiteOpenHelper来实现SQLite数据库中的数据写入和查询,并展示如何将查询结果展示在ListView上。 首先,我们需要创建一个继承自SQLiteOpenHelper的类。这个类负责数据库的...

Global site tag (gtag.js) - Google Analytics