標籤:
SQLite,是一款輕型的資料庫,在安卓手機中內建,SQLite庫可以解析大部分標準SQL語言,下面記錄簡單的使用方式,如有哪位仁兄路過發現有錯誤,請幫我指出,以便我改正。下面是一個簡單的例子,主要是方便與自己學習記憶。
1.首先建一個工具類DBHelper 繼承SQLiteOpenHelper 類。定義DBHelper構造器和重載onCreate()和onUpdgrade()方法。
onCreate():用於建立資料庫使用;
onUpdgrade():用於更新資料庫使用;
1 public class DBHelper extends SQLiteOpenHelper { 2 3 //構造器,參數super(上下文,資料庫名稱,遊標工廠,資料庫版本) 4 public DBHelper(Context context) { 5 super(context, Constant.DB_NAME, null, Constant.VERSION); 6 } 7 8 @Override 9 public void onCreate(SQLiteDatabase db) {10 db.execSQL("CREATE table IF NOT EXISTS ‘"+Constant.USER_TABLE+"‘"11 + " (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, img TEXT)");12 }13 14 @Override15 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {16 17 }18 }
2.建一個常量類(非必須,可選)Constant,用來存放一些相關的常量,如資料庫的名字,版本號碼等:
1 public class Constant {2 public static final String DB_NAME = "uu.db";//資料庫名稱3 public static final int VERSION = 1;//資料庫版本4 public static final String USER_TABLE = "user";//使用者資料表名稱5 }
3.實現對資料表的映射,即Bean類(如果我沒記錯),用於構造User 對象。
1 public class User { 2 private Long id; 3 private String name; 4 private String img; 5 6 public Long getId() { 7 return id; 8 } 9 10 public void setId(Long id) {11 this.id = id;12 }13 14 public String getName() {15 return name;16 }17 18 public void setName(String name) {19 this.name = name;20 }21 22 public String getImg() {23 return img;24 }25 26 public void setImg(String img) {27 this.img = img;28 }29 30 @Override31 public String toString() {32 return "User{" +33 "id=" + id +34 ", name=‘" + name + ‘\‘‘ +35 ", img=‘" + img + ‘\‘‘ +36 ‘}‘;37 }38 }
4.建立Dao類,即對使用者表(user)完成增、刪、改、查操作的額方法,其他類在根據需要直接調用方法即可。
/** * Created by Administrator on 2015/8/1. * 用於實現增刪改查操作 */public class UserDao { private DBHelper dbHelper = null; private SQLiteDatabase db = null; private ContentValues values = null; public UserDao(Context context){ dbHelper = new DBHelper(context); } /** * 增加一個使用者 * @param user * @return */ public long addUser(User user){ //擷取SQLiteDatabase進行資料庫操作,開啟寫操作 db = dbHelper.getWritableDatabase(); //參數綁定對象 values = new ContentValues(); values.put("name",user.getName()); values.put("img", user.getImg()); //儲存操作,在此返回的iD並不是實際的ID,只是該記錄所在的行號,若從未刪除則是正確的 long id = db.insert(Constant.USER_TABLE,null,values); //釋放資源 dbHelper.close(); return id;// String sql = "insert into user(name,img) values(‘"+name+"‘,‘"+img+"‘)";// SQLiteDatabase db = dbHelper.getWritableDatabase();// db.execSQL(sql); } /** *根據ID刪除一個使用者 * @param id * @return */ public void deleteUser(String id){ db = dbHelper.getWritableDatabase(); db.delete(Constant.USER_TABLE,"_id= "+id,null); db.close(); } /** * 更新一個對象 * @param user * @return */ public int updateUser(User user){ db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name",user.getName()); values.put("img",user.getImg()); int k= db.update(Constant.USER_TABLE,values,"_id="+user.getId(),null); db.close(); return k; } /** * 根據ID查詢使用者資訊 * @param uesr_id * @return */ public User findUserByUserId(String uesr_id){ return null; } /** * 擷取所有使用者 * @return */ public List<User> findAllUsers(){ db = dbHelper.getReadableDatabase(); String sql = "select _id,name,img from " + Constant.USER_TABLE + " order by _id desc"; Cursor cursor = db.rawQuery(sql, null); List<User> list = new ArrayList<User>(); //用下面的效果較好,但是要先判斷是否有資料。然後數組開闢一定的空間,由cursor.getCount()定 //List<User> list = new ArrayList<User>(cursor.getCount()); while (cursor.moveToNext()) { User user = new User(); user.setId(cursor.getLong(0)); user.setName(cursor.getString(1)); user.setImg(cursor.getString(2)); list.add(user); } cursor.close();//關閉遊標 db.close(); return list; }}
SQLite資料庫簡單應用