sqlite的使用

 

創建數據庫可以這樣,但一般不這麼使用


	//開發中一般不這樣創建數據庫,一般使用數據庫工具類SqliteOpenHelper
	public void createDBUseContext(Context context){
		//通過上下文來創建數據庫 這樣創建的數據庫直接在/data/data/包名/databases文件夾下
		context.openOrCreateDatabase("cc.db", Context.MODE_PRIVATE, null);
	}
	
	public void createDBUseSqliteDatabase(Context context){
		//通過SqliteDatabase來創建數據庫 這樣創建的數據庫直接在/data/data/包名下
		File file = new File("/data/data/"+context.getPackageName(),"dd.db");
		SQLiteDatabase.openOrCreateDatabase(file, null);
	}
}

 

 

可以使用數據庫工具類SqliteOpenHelper來創建

public class SqliteDatabaseService {
public class MySqliteOpenHelper extends SQLiteOpenHelper {
	
	
	private static SQLiteOpenHelper mInstance;
	private static final String name = "xx.db";
	
	public static SQLiteOpenHelper getInstance(Context context){
		if(mInstance == null){
			mInstance = new MySqliteOpenHelper(context, name, null, 1);
		}
		return mInstance;
	}

	private MySqliteOpenHelper(Context context, String name,
			CursorFactory factory, int version) {
		super(context, name, factory, version);
			}

	/**
	 * 用來創建表、視圖、觸發器、存儲過程
	 */
	@Override
	public void onCreate(SQLiteDatabase db) {
		db.execSQL("create table fish(_id integer primary key autoincrement," +
				"name text)");

	}

	//數據庫升級
	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		
	}

}



數據庫的增刪改查

public class FishService {
	
	private SQLiteOpenHelper mOpenHelper;

	public FishService(Context context) {
		super();
		// TODO Auto-generated constructor stub
		mOpenHelper = MySqliteOpenHelper.getInstance(context);
	}


	//添加
	public void add(String name){
		//獲取可寫的數據庫
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
			//插入數據
			database.execSQL("insert into fish(name) values(?)", new Object[]{name});
			database.close();
		}
	}
	
	//查詢所有
	public List<Fish> queryAll(){
		List<Fish> fishs = new ArrayList<Fish>();
		SQLiteDatabase database = mOpenHelper.getReadableDatabase();
		if(database.isOpen()){
			//結果集
			Cursor c = database.rawQuery("select * from fish", null);
			while(c.moveToNext()){
				int _id = c.getInt(0);
				String name = c.getString(1);
				fishs.add(new Fish(_id, name));
			}
			//關閉
			c.close();
			database.close();
		}
		return fishs;
	}
	
	//更新
	public void update(Fish fish){
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
			database.execSQL("update fish set name = ? where _id = ?", new Object[]{fish.name,fish._id});
			database.close();
		}
	}
	
	//刪除
	public void delete(int _id){
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
			database.execSQL("delete from fish where _id = ?", new Object[]{_id});
			database.close();
		}
	}
}

 

還有一種增刪改查的方法

public class OtherFishService {
	
	private SQLiteOpenHelper mOpenHelper;

	public OtherFishService(Context context) {
		super();
		mOpenHelper = MySqliteOpenHelper.getInstance(context);
	}


	//添加
	public void add(String name){
		//獲取可寫的數據庫
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
			//插入數據
//			database.execSQL("insert into fish(name) values(?)", new Object[]{name});
			ContentValues values = new ContentValues();
			values.put("name", name);
			database.insert("fish", "_id", values);
			database.close();
		}
	}
	
	//查詢所有
	public List<Fish> queryAll(){
		List<Fish> fishs = new ArrayList<Fish>();
		SQLiteDatabase database = mOpenHelper.getReadableDatabase();
		if(database.isOpen()){
			//結果集
//			Cursor c = database.rawQuery("select * from fish", null);
			Cursor c = database.query(
					"fish",
					new String[]{"*"},
					null,
					null,
					null,
					null,
					null);
			while(c.moveToNext()){
				int _id = c.getInt(0);
				String name = c.getString(1);
				fishs.add(new Fish(_id, name));
			}
			//關閉
			c.close();
			database.close();
		}
		return fishs;
	}
	
	//更新
	public void update(Fish fish){
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
//		database.execSQL("update fish set name = ? where _id = ?", new Object[]{fish.name,fish._id});
			ContentValues values = new ContentValues();
			values.put("name", fish.name);
			database.update("fish",
					values,
					" _id = ?",
					new String[]{fish._id+""});
			database.close();
		}
	}
	
	//刪除
	public void delete(int _id){
		SQLiteDatabase database = mOpenHelper.getWritableDatabase();
		if(database.isOpen()){
//			database.execSQL("delete from fish where _id = ?", new Object[]{_id});
			database.delete("fish", 
					" _id = ?",
					new String[]{_id+""});
			database.close();
		}
	}
}


數據類集

//創建此對象集合是爲了給數據庫查詢,接收返回的對象
public class Fish {

	public int _id;
	public String name;
	public Fish() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Fish(int _id, String name) {
		super();
		this._id = _id;
		this.name = name;
	}
	@Override
	public String toString() {
		return "Fish [_id=" + _id + ", name=" + name + "]";
	}
	
}

 

測試類


 

public class FishServiceTest extends AndroidTestCase {

	public void testAdd() throws Exception{
		FishService fs = new FishService(getContext());
		for(int i = 0;i< 10;i++){
			fs.add("張三"+i);
		}
	}
	
	public void testQueryAll() throws Exception{
		FishService fs = new FishService(getContext());
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
	
	public void testUpdate() throws Exception{
		FishService fs = new FishService(getContext());
		fs.update(new Fish(1,"李四"));
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
	
	public void testDelete() throws Exception{
		FishService fs = new FishService(getContext());
		fs.delete(1);
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
}

 

public class OtherFishServiceTest extends AndroidTestCase {

	public void testAdd() throws Exception{
		OtherFishService fs = new OtherFishService(getContext());
		for(int i = 0;i< 10;i++){
			fs.add("張三"+i);
		}
	}
	
	public void testQueryAll() throws Exception{
		OtherFishService fs = new OtherFishService(getContext());
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
	
	public void testUpdate() throws Exception{
		OtherFishService fs = new OtherFishService(getContext());
		fs.update(new Fish(11,"李四"));
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
	
	public void testDelete() throws Exception{
		OtherFishService fs = new OtherFishService(getContext());
		fs.delete(11);
		List<Fish> list = fs.queryAll();
		for(Fish f:list){
			Log.i("i", f.toString());
		}
	}
}




 

發佈了32 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章