編輯:關於Android編程
個人學習整理,如有不足之處,請不吝指教。轉載請注明:@CSU-Max
/** * 查詢所有的記錄 * @return */ public ListqueryAll() { List list = new ArrayList (); SQLiteDatabase db = null; Cursor cursor = null; try { //獲取只讀數據庫實例 db = dbOpenHelper.getReadableDatabase(); cursor = db.query("user", null, null, null, null, null, "_id desc"); //遍歷 Cursor for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor .moveToNext()) { User user = new User(); user.setId(cursor.getInt(cursor.getColumnIndex("_id"))); user.setName(cursor.getString(cursor.getColumnIndex("name"))); list.add(user); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } return list; }
/** * 根據 id 查詢記錄 * @param id * @return */ public User queryUserById(int id) { User user = new User(); SQLiteDatabase db = null; Cursor cursor = null; try { //獲取只讀數據庫 db = dbOpenHelper.getReadableDatabase(); cursor = db.query("user", null, "_id = ?", new String[] { String.valueOf(id) }, null, null, null); if (cursor.moveToFirst()) { user.setId(cursor.getInt(cursor.getColumnIndex("_id"))); user.setName(cursor.getString(cursor.getColumnIndex("name"))); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } return user; }
主要代碼:
/** * 根據某一字段的部分值進行模糊查詢 * * @param word * @return */ public ListqueryByWord(String word) { List list = new ArrayList (); SQLiteDatabase db = null; Cursor cursor = null; try { // 獲取只讀數據庫 db = dbOpenHelper.getReadableDatabase(); cursor = db.query("user", null, "name like ?", new String[] { word + "%" }, null, null, null); // 遍歷 Cursor for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor .moveToNext()) { User user = new User(); user.setId(cursor.getInt(cursor.getColumnIndex("_id"))); user.setName(cursor.getString(cursor.getColumnIndex("name"))); list.add(user); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } return list; }
/** * 向 user 表中 插入一個 user,將 user 的 name 屬性插入到 user 表中的 name 列 * @param user * @return */ public long insert(User user) { SQLiteDatabase db = null; long id = -1; try { db = dbOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", user.getName()); id = db.insert("user", null, values); } catch (Exception e) { e.printStackTrace(); } finally { if (db != null) { db.close(); } } return id; }
/** * 刪除指定 id 的數據 * @param id */ public void delete(int id) { SQLiteDatabase db = null; try { db = dbOpenHelper.getWritableDatabase(); db.delete("user", "_id = ?", new String[] { String.valueOf(id) }); } catch (Exception e) { e.printStackTrace(); } finally { if (db != null) { db.close(); } } }
/** * 更新數據操作 * @param user * @return */ public long update(User user) { SQLiteDatabase db = null; long id = -1; try { db = dbOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name", user.getName()); id = db.update("user", values, "_id = ?", new String[] { String.valueOf(user.getId()) }); } catch (Exception e) { e.printStackTrace(); } finally { if (db != null) { db.close(); } } return id; }
public class Page { // 每頁顯示的記錄數 private int pageSize = 3; // 當前打的頁數 private int pageNum = 1; // 總的記錄數 private int totalCount = 0; // 總的頁數 private int totalNum = 0; /** * 是否有下一頁 * @return */ public boolean isHasNext() { if (pageNum < totalNum) { return true; } else { return false; } } /** * s是否有上一頁 * @return */ public boolean isHasPre() { if (pageNum > 1) { return true; } else { return false; } } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public int getTotalNum() { return totalNum; } public void setTotalNum(int totalNum) { this.totalNum = totalNum; } }
/** * 獲取某一頁的數據 * * @param pageSize * 每頁顯示記錄數 * @param pageNum * 當前的頁碼 * @return */ public ListgetPageUser(int pageSize, int pageNum) { List list = new ArrayList (); SQLiteDatabase db = null; Cursor cursor = null; try { // 獲取只讀數據庫實例 db = dbOpenHelper.getReadableDatabase(); // 使用 limit ? offset ? 來進行分頁 cursor = db.query("user", null, null, null, null, null, "_id asc limit " + String.valueOf(pageSize) + " offset " + String.valueOf((pageNum - 1) * pageSize)); // 遍歷 Cursor for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor .moveToNext()) { User user = new User(); user.setId(cursor.getInt(cursor.getColumnIndex("_id"))); user.setName(cursor.getString(cursor.getColumnIndex("name"))); list.add(user); } } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } return list; }
通過以上的代碼,我們就完成了初步的分頁操作,下面我們對此進行完善一下,獲得總頁數,增加上一頁和下一頁功能。
/** * 獲取表中總的記錄數 * * @return */ public int getTotalCount() { SQLiteDatabase db = null; Cursor cursor = null; int totalCount = 0; try { // 獲取只讀數據庫實例 db = dbOpenHelper.getReadableDatabase(); cursor = db.query("user", null, null, null, null, null, null); // 獲取記錄數 totalCount = cursor.getCount(); } catch (Exception e) { e.printStackTrace(); } finally { if (cursor != null) { cursor.close(); } if (db != null) { db.close(); } } return totalCount; } /** * 得到中的頁數 * * @param pageSize * @return */ public int getTotalNum(int pageSize) { int totalNum = 0; totalNum = getTotalCount() / pageSize + 1; return totalNum; }
/** * 顯示下一頁的數據 * * @param pageSize * 每頁顯示記錄數 * @param pageNum * 當前的頁碼 * @return */ public ListgetNextPage(int pageSize, int pageNum) { List list = new ArrayList (); //設置Page對象的屬性 Page page = new Page(); page.setPageSize(pageSize); page.setPageNum(pageNum); page.setTotalCount(getTotalCount()); page.setTotalNum(getTotalNum(pageSize)); // 判斷是否有下一頁,有下一頁則顯示下一頁的數據 if (page.isHasNext()) { list = getPageUser(pageSize, pageNum + 1); } return list; } /** * 顯示上一頁的數據 * * @param pageSize * 每頁顯示記錄數 * @param pageNum * 當前的頁碼 * @return */ public List getPrePage(int pageSize, int pageNum) { List list = new ArrayList (); Page page = new Page(); page.setPageSize(pageSize); page.setPageNum(pageNum); page.setTotalCount(getTotalCount()); // 判斷是否有上一頁,有上一頁則顯示上一頁的數據 if (page.isHasNext()) { list = getPageUser(pageSize, pageNum - 1); } return list; }
public long insert() { SQLiteDatabase db = null; long id = 0; try { db = dbOpenHelper.getWritableDatabase(); // 開啟事務 db.beginTransaction(); ContentValues values = new ContentValues(); for (int i = 0; i < 5; i++) { values.put("name", "姓名" + 1); id = db.insert("user", null, values) + id; } // 設置事務標志位為成功 db.setTransactionSuccessful(); } catch (Exception e) { e.printStackTrace(); } finally { if (db != null) { // 結束事務,根據標志位來決定是提交還是回滾 db.endTransaction(); db.close(); } } return id; }
關於 SQLite的簡單使用方法就介紹到這裡,下一節將總結 Android 中的文件存儲數據。
個人學習整理,如有不足之處,請不吝指教。轉載請注明:@CSU-Max
本文實例為大家分享了Android下拉刷新的具體代碼,供大家參考,具體內容如下MainActivity.java代碼:package siso.refreshablev;
本文實例講述了Android編程之單元測試用法。分享給大家供大家參考,具體如下:在實際開發中,開發android軟件的過程需要不斷地進行測試。使用Junint測試框架,是
1 背景上路了,准備開始重操那兩年的舊業,後悔之前在上家公司做Amlogic和Realtak方案盒子時沒有養成寫博客的習慣,這算是開篇之作吧,順帶也算是給一個網友的答疑吧
Android系統根據生命周期的不同階段喚起對應的回調函數來執行代碼。系統存在啟動與銷毀一個activity的一套有序的回調函數。本節來討論下不同生命周期的回調函數裡都該