您的位置:首页 > 移动开发 > Android开发

android SQLiteOpenHelper操作数据库 搜索关键字列表应用

2012-08-16 15:52 746 查看
package com.EleMenu_YuanXu_v12.DB;

import java.util.HashSet;

import java.util.Iterator;

import java.util.List;

import java.util.Map.Entry;

import java.util.Set;

import com.EleMenu_YuanXu_v12.Util.UtilValue;

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;

import android.widget.Toast;

/**

* 数据操作,

* @author L

*

*/

public class DBService extends SQLiteOpenHelper{

private List<String> list_menu;

public boolean isCreate = false;

public final static int DATABASE_VERSION = 1; //版本号

public final static String DATABASE_NAME = "keywords.db"; //数据库名

public final static String TABLE_NAME = "keywords";

//初始化该类的时候,创建新的数据库

public DBService(Context context) {

super(context, DBShowImpl.DATABASE_NAME, null, DBShowImpl.DATABASE_VERSION);

}

/**

* 创建数据库表

*/

@Override

public void onCreate(SQLiteDatabase db) {

//判断改表是否存在

if(!tabbleIsExist(DBShowImpl.TABLE_NAME)){

db.execSQL("create table "+DBShowImpl.TABLE_NAME+"(_id integer PRIMARY KEY autoincrement,menu_id varchar(20),keyword text)");

System.out.println("成功创建");

isCreate = true;

}

Log. e("Database" ,"onCreate" );

}

/**

* 更新版本号

*/

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

System.out.println("onUpgrade");

}

// 执行select语句

public Cursor query(String sql, String[] args)

{

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.rawQuery(sql, args);

return cursor;

}

/**

* 创建数据库表

*/

public void creatDB(){

SQLiteDatabase db = null;

db = this.getWritableDatabase();

db.execSQL("create table if not exists "+DBShowImpl.TABLE_NAME+"(_id integer PRIMARY KEY autoincrement,menu_id varchar(20),keyword text)");

}

/**

* 更新数据库

*/

public void updateDB(){

SQLiteDatabase db = null;

db = this.getWritableDatabase();

db.execSQL("DROP TABLE IF EXISTS["+DBShowImpl.TABLE_NAME+"]");

creatDB();

initDB();

Toast.makeText(UtilValue.mainActivity, "成功更新数据库", 500).show();

Log. e("Database" ,"onUpgrade" );

}

/**

* 根据关键字返回匹配的一系列 menu_id

* @param keyword 关键字

* @return 关键字id集合List

*/

public Set<String> queryKeyword(String keyword){

Set<String> keywords_list = new HashSet<String>();

SQLiteDatabase db = this.getReadableDatabase();

// Cursor cursor = db.query("keywords", new String[]{"_id","menu_id","keyword"}, "keyword=?", new String[]{keyword}, null, null, null);

Cursor cursor = db.rawQuery("select * from "+DBShowImpl.TABLE_NAME+" where keyword like ? ", new String[]{"%"+keyword+"%"});

while(cursor.moveToNext()){

keywords_list.add(cursor.getString(cursor.getColumnIndex("menu_id")));

}

return keywords_list;

}

//将数据插入数据库

public void insertKeyword(ContentValues values){

SQLiteDatabase db = this.getWritableDatabase();

//调用insert方法,就可以将数据插入到数据库当中

db.insert(DBShowImpl.TABLE_NAME, null, values);

}

/**

* 初始化数据库-添加数据

*/

public void initDB(){

DBShowImpl dbShowImpl = new DBShowImpl(UtilValue.mainActivity);

//获得集合迭代器

Iterator<Entry<String, List<String>>> iterator = dbShowImpl.getKEYS_M().entrySet().iterator();

while(iterator.hasNext()){

Entry<String, List<String>> entry = iterator.next();

ContentValues values = new ContentValues();

values.put("menu_id", entry.getKey());

list_menu = entry.getValue();

for (int i = 0;i < list_menu.size();i++){

values.put("keyword",list_menu.get(i));

this.insertKeyword(values);

}

}

}

/**

* 判断某张表是否存在

* @param tabName 表名

* @return

*/

public boolean tabbleIsExist(String tableName){

boolean result = false;

if(tableName == null){

return false;

}

SQLiteDatabase db = null;

Cursor cursor = null;

try {

db = this.getReadableDatabase();

String sql = "select count(*) as c from Sqlite_master where type ='table' and name ='"+tableName.trim()+"' ";

cursor = db.rawQuery(sql, null);

if(cursor.moveToNext()){

int count = cursor.getInt(0);

if(count>0){

result = true;

}

}



} catch (Exception e) {

e.printStackTrace();

}

return result;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: