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();
	}
}
相關文章
相關標籤/搜索