編輯:關於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 List getPageUser(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 List getNextPage(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學習教程之下拉刷新實現代碼(11)
本文實例為大家分享了Android下拉刷新的具體代碼,供大家參考,具體內容如下MainActivity.java代碼:package siso.refreshablev;
Android編程之單元測試實例分析
本文實例講述了Android編程之單元測試用法。分享給大家供大家參考,具體如下:在實際開發中,開發android軟件的過程需要不斷地進行測試。使用Junint測試框架,是
使用Android Studio導入源碼
1 背景上路了,准備開始重操那兩年的舊業,後悔之前在上家公司做Amlogic和Realtak方案盒子時沒有養成寫博客的習慣,這算是開篇之作吧,順帶也算是給一個網友的答疑吧
Android Activity生命周期都該做哪些事情?
Android系統根據生命周期的不同階段喚起對應的回調函數來執行代碼。系統存在啟動與銷毀一個activity的一套有序的回調函數。本節來討論下不同生命周期的回調函數裡都該