Android 資料儲存與讀取:SQLite
阿新 • • 發佈:2019-02-16
在Android平臺上,集成了一個嵌入式關係型資料庫—SQLite。如果你想要開發 Android 應用程式,一定需要在 Android 上儲存資料,使用SQLite 資料庫是一種非常好的選擇。
下面介紹的基本使用:
是一個抽象類不能直接例項化,所以新建一個類DBOpenHelper繼承自SQLiteOpenHelper :
public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelper(Context context) { super(context, "yhn.db", null, 1); } //資料庫第一次建立時候呼叫, public void onCreate(SQLiteDatabase db) { db.execSQL("create table user(uid integer primary key autoincrement, uname varchar(20), uaddress varchar(20))"); } //資料庫檔案版本號發生變化時呼叫 public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) { }
如果執行上邊的程式碼,則會建立一個數據庫檔案xx.db
資料庫操作類:
public class DBDao { DBOpenHelper dbOpenHelper; public DBDao(Context context){ this.dbOpenHelper=new DBOpenHelper(context); } /** * 新增一條資料 * @param user */ public void save(User user){ SQLiteDatabase db=dbOpenHelper.getWritableDatabase(); db.execSQL("insert into user(uname,uaddress) values(?,?)", new Object[]{user.getUname(),user.getUaddress()}); db.close(); } /** * 刪除一條資料 * @param uid */ public void delete(Integer uid){ SQLiteDatabase db=dbOpenHelper.getWritableDatabase(); db.execSQL("delete from user where uid=?", new Object[]{uid}); db.close(); } /** * 更新一條資料 * @param user */ public void update(User user){ SQLiteDatabase db=dbOpenHelper.getWritableDatabase(); db.execSQL("update user set uname=?,uaddress=? where uid=?", new Object[]{user.getUname(),user.getUaddress(),user.getUid()}); db.close(); } /** * 查詢一條資料 * @param uid */ public User find(Integer uid){ SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); Cursor cursor =db.rawQuery("select * from user where uid=?", new String[]{uid.toString()}); if(cursor.moveToFirst()){ int uid2=cursor.getInt(cursor.getColumnIndex("uid")); String uname=cursor.getString(cursor.getColumnIndex("uname")); String uaddress=cursor.getString(cursor.getColumnIndex("uaddress")); User user=new User(); user.setUid(uid2); user.setUname(uname); user.setUaddress(uaddress); return user; } cursor.close(); return null; } /** * 分頁查詢資料 * @param offset 跳過多少條資料 * @param maxResult 每頁多少條資料 * @return */ public List<User> getScrollData(int offset, int maxResult){ List<User>users=new ArrayList<User>(); SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); Cursor cursor =db.rawQuery("select * from user order by uid asc limit ?,?", new String[]{String.valueOf(offset), String.valueOf(maxResult)}); while(cursor.moveToNext()){ int uid2=cursor.getInt(cursor.getColumnIndex("uid")); String uname=cursor.getString(cursor.getColumnIndex("uname")); String uaddress=cursor.getString(cursor.getColumnIndex("uaddress")); User user=new User(); user.setUid(uid2); user.setUname(uname); user.setUaddress(uaddress); users.add(user); } return users; } /** * 獲取資料總數 * @return */ public long getCount(){ SQLiteDatabase db=dbOpenHelper.getReadableDatabase(); Cursor cursor =db.rawQuery("select count(*) from user", null); cursor.moveToFirst(); long reslut=cursor.getLong(0); return reslut; } }
示例:向資料庫中新增一條資料
DBDao dbDao=new DBDao(this);
User user=new User();
user.setUname("qixiaohu");
user.setUaddress("chengdu");
dbDao.save(user);
PC上管理SQLite資料庫的方法:
上邊新增資料後可以看到資料新增成功: