Android中數據庫的使用:

Android中數據庫的使用:sql

1.建立一個類,繼承SQLiteOpenHelper,實現該類的構造方法
public XXX(Context context, String name, CursorFactory factory, int version)

-->該構造方法能夠只設置一個參數Context context,其他參數可在surper中肯定
	public XXX(Context context, String name, CursorFactory factory, int version){
		surper(context,name,factory,version);
	}
-->改進以後
	public XXXX(Context context){
		surper(context,"xxx.db",null,1);
	}
-->構造方法中參數的含義
	context---上下文
	name---數據庫名稱
	factory---遊標對象,默認爲空
	version---版本,從1開始的遞增整數
	
2.建立好了類以後,重寫onCreate()和onUpgrade()方法

	-->onCreate()方法,在數據庫第一次建立時調用,該方法主要用於表結構的建立。
		因此,全部建表的sql語句,都在改方法中執行.
		db.execSQL("sql");
		
	-->onUpgrade()方法,數據庫版本號改變/修改表結構(增/刪一個字段)調用
	
3.實例化XXX類,調用靜態方法getReadableDatabase/getWritableDatabase,獲得SQLiteDatabase對象

	XXX xx = new XXX(context);
	SQLiteDatabase db = xx.getReadableDatabase();
	
	☆☆☆操做完db及時關閉數據庫,減小內存消耗
			db.close();
	
4.進行增刪改查操做

	-->增長
		
	long result = db.insert(String table, String nullColumnHack, ContentValues values);
	
		table:表名
		nullColumnHack:默認爲null,爲null時表示插入一個空行
		values:添加那條數據的值,底層由HashMap實現,values.put(key,value)實現數據的添加
		
		result:返回添加成功後那一行的ID,-1添加失敗
	
	-->刪除
	int result = db.delete(String table, String whereClause, String[] whereArgs);
	
		whereArgs:判斷條件,如"name=?"
		whereClause:判斷條件的佔位符,String[]類型		new String[]{"小王"}
	
		result:刪除的行數
		
	-->更新
		相似刪除,多一個value
		
		update(String table, ContentValues values, String whereClause, String[] whereArgs)
			value:存放要更新的信息
	
	-->查詢(Cursor遊標對象)
		Cursor cursor = db.rawQuery(sql語句,查詢條件)
		返回cursor結果集
		
		cursor.getCount()獲取結果集的行數
		
		cursor.moveToNext()判斷是否有下一行內容,有返回true,無返回false;
		
		☆☆☆cursor使用完後須要關閉,cursor.close();
	
5.優化
	避免每次操做數據庫,都實例化一個XXX類,建立數據庫的過程放在dao的構造函數中,
	☆☆☆☆其中,獲取SQLiteDatabase對象的方法不能放在構造函數中。由於,在構造函數中
	只獲取了一個SQLiteDatabase對象,而每次對數據進行不一樣的操做後都關閉了數據庫,在以
	後的操做中,就沒法得到SQLiteDatabase對象,從而致使對數據操做失敗!
	
	
	
	
-----------2016年10月14日22:10:07
相關文章
相關標籤/搜索