SQLite 數據庫 SQLite 版本控制類 SQLiteOpenHelper
@Override onCreate();//只有在設備上不存在要獲取的數據庫時才會調用。
@Override onUpgrade();
// 在更新表結構時, 只需要修改構造方法中的數據庫版本號,并在onUpgrade()方法中更新表結構的 SQL語句。
***************************************************************************
SQLite數據庫操作類SQLiteDatabase
1,execSQL() 方法. 可執行除查詢的常規sql語句。二個 @Override 方法。 execSQL(String sql) ;//直接使用SQL語句。
db.execSQL("INSERT INTO student(name, studyTime, age) VALUES('AAA','2016-07-27',30)"); execSQL(String sql, Object[] bindArgs);//支持占位符?
db.execSQL("INSERT INTO sudent(name, studeyTime, age) VALUES(?,?,?)", new Object[]{"AAA","2016-07-27",30});
2 rawQuery() 方法 rawQuery(String sql, String[] selectionArgs);
//sql 為常規SQL語句,如果沒有?占位符, 則第二參數為null;
3 insert() 方法 insert(String table, String nullColumnHack, ContentValues values);
ContentValues values=new ContentValues();
values.put("name", "AAAA");
db.insert("student", null, values);
4 delete() 方法 delete(String table, String whereClause, String[] whereArgs); db.delete("student", "name=?", new String[]{"AAAA"});
5 update() 方法 update(String table, ContentValues values, String whereClause, String[]whereArgs); ContentValues values=new ContentValues(); values.put("age", 30);//更新的內容 db.update("student", values, "name=?", new String[]{"AAAAA"});
6 query() 方法 有三個重載方法
一, query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy,String having, String orderBy); db.query("student", new String[]{"name"},"age=?", new String[]{"24"},null, null, );
二, query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String vaving, String orderBy, String limit) //limit參數允許用戶限制返回的行數。
三,query(Boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit); //distinct 的布爾類型允許用戶指定是否返回非重復的行。 query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
(方法 1 可以執行3、4、5 的功能。) (方法 2和方法 6 執行查詢功能。
****************************************************************************
Cursor 查詢的數據結果集。
使用Cursor 方法 moveToNext() ; moveToPrevious(); moveToFirst(); moveToLast();
通過以上方法查行或遍歷行后取對應列值 getInt(), getLong(), getString()...
如:cursor.getString(cursor.getColumnIndex("列名"));
****************************************************************************
使用SQLiteQueryBuilder 多表查詢
SQLiteQueryBuilder builder=new SQLiteQueryBuilder();
builder.setTables(TABLENAME_1+","+ TABLENAME_2);//設置需要查詢的二個表 builder.appendWhere(TABLENAME_1+"."+NAME+"="+ TABLENAME_2+"."+NAME);//設置關聯條件參 數String builder.query(SQLiteDatabase db,String[] projection, String selection, String[] selectionArgs, String groupBy, String having, string sortOrder);
***********************************************************************
數據庫的封裝 ,常用方法。
自定義封裝類中建一個靜態的繼承SQLiteOpenHelper幫助類, 封裝好增 刪 改 查的方法,
建立與表對應的實體類。
在activityj里交互數據。