刪除和修改的方法與(上)提到的增長的方法類似,均可以執行sql語句或者直接用ContentValue java
查詢操做 sql
/** * * 查詢:查詢與其餘不一樣的是: * 1,查詢只要獲取可讀的數據庫就能夠了 * 2,增刪改執行sql語句後都沒有返回值,而查詢須要有返回值Cursor * @return */ public User find(int id){ SQLiteDatabase db = myhelper.getReadableDatabase(); // 獲取可讀的數據庫,先嚐試獲取可寫的,異常再獲取可讀的 Cursor c = db.rawQuery("SELECT name, password FROM user WHERE id=?", new String[]{id+""}); /*第二種查詢操做 /** * 最後三個參數:groupBy分組, having分組條件, orderBy排序 * user表,查詢name和password兩列, 查詢條件是id */ Cursor c = db.query("user", new String[]{"name","password"}, "id=?", new String[]{id +""}, null, null, null); */ User user = null; if(c.moveToNext()){ //將遊標向後移動,返回移動是否成功,判斷是否包含下一條記錄 String name = c.getString(c.getColumnIndexOrThrow("name"));
//先查到name的索引,在經過索引拿到內容,效率沒下面的高 //String name = c.getString(0); int password = c.getInt(1); user = new User(id, name, password); } return user; }
在測試類中:(建立類繼承AndroidTestCase,清單文件中配置test節點,方法名以test開頭) 數據庫
public void testCreateDB(){ /** * 第一次執行,指定環境下沒有數據庫文件:建立數據庫,執行oncreate方法 * 之後再執行,數據庫存在,版本號沒變:只打開數據庫 * 數據庫存在,版本號改變:打開數據庫,執行onUpgrade()方法 */ MyHelper myhelper = new MyHelper(getContext()); //activity中以getApplicationContext()獲取當前程序環境,測試類中以getContext()獲取環境 myhelper.getWriteableDatabase(); //獲取可寫的數據庫 } 在這裏執行代碼 public void testInsert(){ UserDao dao = new UserDao(getContext()); //不能定義成全局變量 dao.insert(new User("xxx",123456)); }
其他的方法與上面的類似,都是經過dao對象來調用方法。 測試