android开发使用sqLite数据库

本身写的sqlite数据库操做。以下:android

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class SearchHistoryHelp extends SQLiteOpenHelper {
	public static String DB_NAME = "SearchHistory.db";// 物品信息的数据库文件名
	public static String DB_TABLE_NAME = "SearchHistory";// 物品信息的数据表名
	private static final int DB_VERSION = 2;
	public SearchHistoryHelp(Context context) {
		super(context, DB_NAME, null, DB_VERSION);
		// TODO Auto-generated constructor stub
	}
	@Override
	public void onCreate(SQLiteDatabase db) {
		// 建立表
		db.execSQL("CREATE TABLE IF NOT EXISTS " + DB_TABLE_NAME
				+ " (HID INTEGER PRIMARY KEY AUTOINCREMENT,"
				+ " HName VARCHAR, HType INTEGER,HTime VARCHAR)");
	}
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		if (oldVersion == 1 && newVersion == DB_VERSION) {
			db.execSQL("ALTER TABLE " + DB_TABLE_NAME
					+ " ADD COLUMN HType INTEGER");
			db.execSQL("ALTER TABLE " + DB_TABLE_NAME
					+ " ADD COLUMN HTime VARCHAR");
                   }
	}
}

在使用的时候直接经过SearchHistoryManager类进行管理就行。sql

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
public class SearchHistoryManager {
	private SearchHistoryHelp searchHelp;
	private SQLiteDatabase db;
	public SearchHistoryManager(Context context) {
		searchHelp = new SearchHistoryHelp(context);
		db = searchHelp.getWritableDatabase();
	}
	/*
	 * 向表中添加一个信息
	 * hname表示保存的字段
	 * htype表示字段的类型。1为商品,2为专题
	 * htime表示保存字段时的时间
	 */
	public void add(String hname,int htype,String htime) {
		ContentValues cValues = new ContentValues();
		// cValues.put("GID", gid);
		cValues.put("HName", hname);
		cValues.put("HType", htype);
		cValues.put("HTime", htime);
		db.insert(SearchHistoryHelp.DB_TABLE_NAME, null, cValues);
	}
/*
	 * 经过name来删除对象
	 */
	public void delData(String name) {
		String[] whereArgs = { name };
		db.delete(SearchHistoryHelp.DB_TABLE_NAME, "HName=?", whereArgs);
	}
	/*
	 * 清除数据
	 */
	public void clearData() {
		ExecSQL("DELETE FROM SearchHistory");
	}
	/**
	 * 执行一个SQL语句
	 * 
	 * @param sql
	 */
	private void ExecSQL(String sql) {
		try {
			db.execSQL(sql);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
/*
	 * 返回全部数据
	 */
	public ArrayList<SearchRecordBean> searchAllData() {
		String sql = "SELECT * FROM SearchHistory";
		return ExecSQLForUserInfo(sql);
	}
	/**
	 * 执行SQL命令返回list
	 * 
	 * @param sql
	 * @return
	 */
	private ArrayList<SearchRecordBean> ExecSQLForUserInfo(String sql) {
		ArrayList<SearchRecordBean> list = new ArrayList<SearchRecordBean>();
		Cursor c = ExecSQLForCursor(sql);
		while (c.moveToNext()) {
			SearchRecordBean recordBean=new SearchRecordBean();
			recordBean.sData=c.getString(c.getColumnIndex("HName"));
			recordBean.sType=c.getString(c.getColumnIndex("HType"));
			recordBean.sTime=c.getString(c.getColumnIndex("HTime"));
			list.add(recordBean);
		}
		c.close();
		return list;
	}
/**
	 * 若是表中含有商品类型的,则返回保存的最后一个
	 * 若是表中含有专题类型的,则返回保存的最后一个
	 * 1,表示商品。 2表示专题
	 */
	public SearchRecordBean getGoodsTypeLase(int type){
		SearchRecordBean recordBean=new SearchRecordBean();
		String sql = "SELECT * FROM SearchHistory where HType="+type;
		Cursor c = ExecSQLForCursor(sql);
		if (c.getCount()==0) {
			recordBean.sData = "";
			recordBean.sType = "";
			recordBean.sTime = "";
			return recordBean;
		}
		while (c.moveToNext()) {
			if (c.isLast()) {
				recordBean.sData=c.getString(c.getColumnIndex("HName"));
				recordBean.sType=c.getString(c.getColumnIndex("HType"));
				recordBean.sTime=c.getString(c.getColumnIndex("HTime"));
			}
		}
		return recordBean;
	}
/**
	 * 执行SQL,返回一个游标
	 * 
	 * @param sql
	 * @return
	 */
	private Cursor ExecSQLForCursor(String sql) {
		Cursor c = db.rawQuery(sql, null);
		return c;
	}
	public void closeDB() {
		db.close();
	}
}
相关文章
相关标签/搜索