sqlite模糊查询与分页

前端之家收集整理的这篇文章主要介绍了sqlite模糊查询与分页前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sqlite模糊查询分页

/**
*
*
@param
queryWords 查询的关键词(中英文都可以)
*
@param
curItem 当前查询到的item 所在位置
*
@param
sizeRequest 每次请求查询的数据行数
*
@return返回值是一个List,里面保存的是一条条记录
*/

public List<Glossary> findDBManagerWords(String queryWords, int curItem, int sizeRequest) {
sqliteDatabase database = sqliteDatabase.openOrCreateDatabase(
DBManager.
DB_PATH + "/" + DBManager. DB_NAME , null ); // 获取导入的数据库操作对象

sqliteDatabase db = database;
// //如果只对数据进行读取,建议使用此方法
dbGlossary = new ArrayList<Glossary>();
if ( dbGlossary != null ) {
dbGlossary .clear(); // 如果列表里有数据,重新加载前应清空
}

// 查询 glossary这张数据表
Cursor cursor = db.rawQuery(
"select * from glossary where glo_EN_Name like ? or glo_CN_Name like ? or glo_description like ? limit ?,?" , new String[] { "%"
+ queryWords + "%" , "%" + queryWords + "%" , "%" +queryWords + "%" ,String.valueOf(curItem),String.valueOf(sizeRequest)});
//select查询返回的是一个cursor,通过对cursor 进行循环,可以解析出每一个字段
while (cursor.moveToNext()) {

String str_glo_CN_Name = cursor.getString(cursor.getColumnIndex(
"glo_CN_Name" ));
String str_glo_EN_Name = cursor.getString(cursor.getColumnIndex("glo_EN_Name" ));
String str_glo_description = cursor.getString(cursor .getColumnIndex("glo_description"));

//将一条记录里的每一个字段保存到glossary这个对象中,该对象可能还有其他属性,没有赋值的话就是默认值
Glossary glossary = new Glossary();
glossary.setGloCnName(str_glo_CN_Name);
glossary.setGloEnName(str_glo_EN_Name);
glossary.setGloDescription(str_glo_description);
//将对象保存添加进List中
dbGlossary .add(glossary);
}

cursor.close();
// db.close();
if (db.isOpen()) {
db.close();
}
//返回List
return dbGlossary ;

}

以上的findDBManagerWords()函数中,最重要的是下面这句话:
Cursor cursor = db.rawQuery(
"select * from glossary where glo_EN_Name like ? or glo_CN_Name like ? or glo_description like ? limit ?,?",new String[] { "%"
+ queryWords + "%" , "%" + queryWords + "%" , "%" +queryWords + "%" ,String.valueOf(curItem),String.valueOf(sizeRequest)});

rawQuery()的定义形式如下
public Cursor rawQuery (String sql,String[] selectionArgs)
sql :the sql query. The sql string must not be ; terminated
selectionArgs :You may include ?s in where clause in the query,which will be replaced by the values from selectionArgs. The values will be bound as Strings.

函数第一个字段 sql 是我们用来查询时使用的 sql语句,要注意的是,用select 语句时,会涉及到查询条件,条件里的参数我们都用问号(?)来代替,
具体问号里面是哪个关键词,要放在函数的第二个参数selectionArgs当中~~
selectionArgs是一个字符串数组,数组里的每个元素都是字符串(如果查询条件中某个参数是int类型的,可以用String.valueOf(sizeRequest)方式来转换)

上面语句还涉及到select的模糊查询
将会对glo_EN_Name,glo_CN_Name,glo_description这几个字段进行模糊查询
"%"+ queryWords +"%" 的意思是,只要字段中包含queryWords这个关键字,那么就会被检索出来,
前后的两个百分号代表关键字之前或之后可以有任意多个字符
原文链接:https://www.f2er.com/sqlite/198581.html

猜你在找的Sqlite相关文章