android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sqlite的模糊查询方式,直接上代码把:

package com.example.utils;

import java.util.ArrayList;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; public class DBManage extends SQLiteOpenHelper { static int init_version = 1;
static String database_name = "android_sqlite_test.db";
static String tab_name = "uer_log";
static String tab_field01 = "_id";
static String tab_field02 = "log_name";
SQLiteDatabase mDatabase; public DBManage(Context context) {
super(context, database_name, null, init_version);
// TODO Auto-generated constructor stub
mDatabase = getWritableDatabase();
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "create table " + tab_name + " ( " + tab_field01
+ " integer primary key , " + tab_field02 + " text not null) "; db.execSQL(sql);
} @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub } /**
* 插入记录
*
* @param u
* @return
*/
public boolean insertData(String... str) { int request_int = 0;
for (int i = 0; i < str.length; i++) { // 实例化一个ContentValues 对象 ,作用,收集数据,方便于SQLite执行增,删,改,查
ContentValues contentValues = new ContentValues();
contentValues.put(tab_field02, str[i]);
mDatabase.insert(tab_name, null, contentValues);
request_int++;
}
return str.length == request_int;
} // 根据条件模糊查询数据库数据
public ArrayList<String> query(int top_int, String... str) {
ArrayList<String> result_list = new ArrayList<String>();
mDatabase = getReadableDatabase();
//模糊查询的三种方式:
/*
* 全部查询
String current_sql_sel = "SELECT * FROM " + tab_name;
Cursor c = mDatabase.rawQuery(current_sql_sel, null);*/ //1.使用这种query方法%号前不能加' ;
Cursor c_test = mDatabase.query(tab_name, new String[]{tab_field02}, tab_field02+" LIKE ? ",
new String[] { "%" + str[0] + "%" }, null, null, null); //2.使用这种query方法%号前必须加' ;
// Cursor c_test=mDatabase.query(tab_name, new String[]{tab_field02},tab_field02+" like '%" + str[0] + "%'", null, null, null, null); //3.使用这种方式必须在%号前加' ;
String current_sql_sel = "SELECT * FROM "+tab_name +" where "+tab_field02+" like '%"+str[0]+"%'";
//Cursor c_test = mDatabase.rawQuery(current_sql_sel, null); Log.e("tag", "查询完成...");
while (c_test.moveToNext()) {
String name = c_test.getString(c_test.getColumnIndex(tab_field02));
//name.contains(str[0]);
// 让集合中的数据不重复;
if (!result_list.contains(name)) {
result_list.add(name);
Log.e("tag", name);
}
}
c_test.close(); return result_list;
} }

转载请注明出处:
http://blog.csdn.net/fth826595345/article/details/9199235

最新文章

  1. 【Android】Ignoring InnerClasses attribute for an anonymous inner class
  2. PyAutoGUI-python版的autoit/AHK
  3. 各种音视频编解码学习详解 h264 ,mpeg4 ,aac 等所有音视频格式
  4. c# TCPclient
  5. [NYIST32]组合数(状压,枚举,暴力)
  6. kafka迁移与扩容
  7. git merge branches
  8. Redis操作List工具类封装,Java Redis List命令封装
  9. Scut:Redis 资源管理器
  10. oracle rowid 详解
  11. iOS开发 - Swift实现清除缓存功能
  12. 解决运行pytorch程序多线程问题
  13. Spring Security 入门(1-6-1)Spring Security - 配置文件解析和访问请求处理
  14. ES6关于Promise的用法
  15. Session&amp;Cookie(Introduction、Application)
  16. es6学习日记1
  17. Spring MVC POM示例
  18. git和svn的对比
  19. Execute SQL Task 如何返回结果数据集
  20. Java - Calendar类的使用

热门文章

  1. hibernate缓存机制和事务隔离机制
  2. loadrunner必用函数web_reg_save_param获取多个符合边界值条件的使用方法
  3. ASP.NET 5+EntityFramework 7
  4. 软件开发人员真的了解SQL索引吗(索引使用原则)
  5. C和Java中数组的定义
  6. Java中“==”和equals()方法
  7. Android在WebView上构建Web应用程序
  8. Rich IntelliSense for jQuery
  9. 1001 - Another A+B
  10. Dev环境中的集成测试用例执行时上下文环境检查(实战)