android中sqlite查詢
阿新 • • 發佈:2019-02-03
查詢資料庫:
兩種方式--第一種方式:類似INSERT UPDATE DELETE,有兩種方法使用select 從SQLite資料庫檢索資料。
使用rawQuery()直接呼叫select 語句,使用query() 方法構建一個查詢。
小貼士:
* onCreate(); 該方法在資料庫第一次建立的時候呼叫,只調用一次;
* onUpgrade(); 該方法在資料庫版本更新的時候呼叫;
* T-SQL: 國際標準機制
DDL:資料定義語言:create drop alter;
DCL: 資料控制語言:grant revoke;
DML: 資料管理語言:insert delete update select ;
* select 列的列表 from 表的列表 where 條件語句 group by 分組屬性 having 分組條件 order by 排序列 asc|desc limit m, n;
* 遊標:遊標的實質使一種能從包括多條資料記錄的結果集種每次提取一條記錄的機制;
遊標的使用,Cursor的方法:
* close(); 關閉遊標 ,釋放資源;
* copyStringToBuffer(int columnIndex,CharArrayBuffer buffer); 在緩衝區中檢索請求的列的文字,將其儲存;
* getColumnCount(); 返回所有列的行數;
* getColumnIndex(String columnName); 返回指定的列,如果不存在那麼返回-1;
* getColumnIndexOrThrow(String columnName);從0開始返回指定列的名稱,如果不存在將丟擲異常;
* getColumnName(int columnIndex); 從給定的索引返回列名;
* getColumnNames(); 返回一個字串陣列的列名;
* moveToFirst(); 將遊標移動到第一條;
* moveToLast(); 將遊標移動到最後一條;
* move(int offset); 將遊標移動到指定ID;
* moveToNext(); 將遊標移動到下一條;
* moveToPrevious(); 將遊標移動到上一條;
* getCount(); 得到遊標總記錄條數;
* isFirst(); 判斷當前遊標是否為第一條資料;
案例:建立一個數據庫,並在資料庫第一次建立的時候初始化建立一張表student,新增記錄,
然後查詢資料庫種表的資料,顯示出來;
java程式碼如下:
/* 查詢資料庫 *//* 返回一個遊標物件 */ public Cursor selectData(){ /* 與資料庫獲得連線,獲得只讀屬性 */ SQLiteDatabase sqliteDatabase = dbhelper.getReadableDatabase(); /* 使用遊標儲存得到的結果集 *//* 參1:查詢語句 ; 參2:查詢條件 */ //Cursor cursor = sqliteDatabase.rawQuery("select * from student", null); /* 使用查詢語句:方式二 * @ distinct --是否去除重複行 例:值為:true/false; * @ table --表名 * @ columns --要查詢的列 例: new String[]{"id","name","age"} * @ selection --查詢條件 例:"id>?" * @ selectionArgs --查詢條件的引數 例:new String[]{"3"} * @ groupBy --對查詢的結果進行分組 * @ having --對分組的結果進行限制 * @ orderby --對查詢的結果進行排序; 例:"age asc" * @ limit --分頁查詢限制 ; 例:"2,5" 從第2行開始,到第5行結束;注:行數從0 開始; * */ Cursor cursor = sqliteDatabase.query(true,"student", new String[]{"_id","name","age"}, "_id>?", new String[]{"1"}, null, null, "age desc", "1,5"); /* 使用遊標---獲取遊標中的資料 */ while(cursor.moveToNext()){ String id = cursor.getString(cursor.getColumnIndex("_id")); String name = cursor.getString(cursor.getColumnIndex("name")); String age = cursor.getString(cursor.getColumnIndex("age")); Toast.makeText(MainActivity.this, "_id="+id+" name="+name+" age="+age, 1000).show(); } return cursor; }