遇到一个好玩的事情,使用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中,我们可以使用`SQLiteQueryBuilder`或直接在`SQLiteDatabase`对象上调用`rawQuery()`方法来执行模糊查询。例如,要查询一个名为`Contacts`表中名字包含“张”的所有记录,可以编写如下SQL语句: ```sql...
使用 SQLiteDatabase 操作 SQLite 数据库 代码如下:/* Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除...
return db.rawQuery("select SUM(Money) as SumInCome from datas where Money>0",null); } public Cursor ExitsExpenditure() { SQLiteDatabase db = getReadableDatabase(); return db.rawQuery("select...
- `onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)`: 当数据库版本发生变化时调用,用于升级表结构等。 2. **SQLiteDatabase**: 用于执行各种数据库操作,如插入、删除、更新和查询数据。 3. **...
在Android应用开发中,数据库是数据存储的重要方式,特别是在处理大量数据时,为了提高用户体验,分页查询就显得尤为重要。本篇文章将详细讲解如何在Android中实现数据库的分页查询功能,以高效、流畅地加载和展示...
`rawQuery()` 是Android中的SQLiteHelper类提供的一个方法,它直接接收一个SQL查询字符串和可选的绑定参数,返回一个Cursor对象,通过Cursor我们可以遍历查询结果。例如,如果我们想要查询名为`Users`的表中所有...
本教程将详细介绍如何在Android应用中查询SQLite数据库,并将查询结果展示到屏幕上。 首先,你需要创建一个SQLite数据库。在Android中,我们通常通过扩展`SQLiteOpenHelper`类来实现这个任务。`SQLiteOpenHelper`...
综上所述,这份"Android 快捷查询源码"涵盖了Android数据库操作的多个方面,包括数据库创建、查询优化、异步处理、数据共享等。通过深入研究这份源码,开发者可以更好地理解如何在Android环境中高效地管理数据,提升...
最后,我们需要将查询结果展示在ListView上。这通常涉及到使用Adapter来连接ListView和数据源。创建一个自定义的Adapter,例如`CourseAdapter`,并将其与ListView绑定。在Adapter的构造函数中传入查询结果Cursor,...
综上所述,"Android查询工具源代码.zip"提供了完整的查询工具实现,开发者可以学习到如何有效地与SQLite交互,构建ContentProvider,以及处理异步查询等关键技巧。此外,由于代码已经过修正,可以直接编译运行,这极...
- 在`SQLiteOpenHelper`的子类中编写查询方法,例如`queryPhoneNumber(String phoneNumber)`,使用`rawQuery()`方法执行SQL查询,获取指定电话号码的归属地信息。 - SQL查询语句可能类似`SELECT * FROM Phone...
通过分析这些源码,我们可以了解如何在Android平台上构建一个实用的查询工具,同时也能够学习到JAVA ANDROID相关的编程技巧和设计模式。 首先,源码中的核心部分很可能包含了数据查询的相关逻辑。在Android中,数据...
本篇文章将详细讲解如何在Android中实现一个具有实时查询功能的搜索框,包括如何给EditText添加文本更改监听,以及如何在用户输入时使用模糊查询从数据库中检索数据并显示在ListView中。 首先,我们需要在布局文件...
对于更复杂的查询,可以使用`rawQuery()`方法,它接受SQL查询字符串和参数数组,返回一个Cursor对象,可以遍历查询结果。 4. **Cursor**:Cursor是数据游标,代表查询结果集。通过Cursor,可以获取每一行数据,包括...
- `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数据库中的数据写入和查询,并展示如何将查询结果展示在ListView上。 首先,我们需要创建一个继承自SQLiteOpenHelper的类。这个类负责数据库的...