Android 資料庫詳解 SQLiteOpenHelper
阿新 • • 發佈:2018-12-19
private static final String DB_NAME = "user.db"; private static final String TABLE_NAME = "t_user"; private UserSqliteOpenHelper helper; private ArrayList<User> al = new ArrayList<User>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act_db); helper = new UserSqliteOpenHelper(this, DB_NAME, null, 1); } // 建立資料庫 public void createDB(View view) { // 如果資料庫還不存在 會執行onCreate()方法並獲取資料庫物件, 如果已存在會直接得到當前資料庫(不執行onCreate) SQLiteDatabase db = helper.getWritableDatabase(); db.close(); } // 使用sql語句新增資料 public void insert1(View view) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "insert into t_user(c_name,c_age,c_phone) values (?,?,?)"; db.execSQL(sql, new Object[] { "鋼鐵俠", 40, "999" }); // 關閉資料庫 db.close(); } // 使用Android自帶api新增資料 public void insert2(View view) { SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("c_name", "蜘蛛俠"); values.put("c_age", 18); values.put("c_phone", "888"); // 引數1:表名 引數2:如果要求傳的每個欄位都不為null的話就傳null, 引數3:類似雙列集合,用來設定需要插入資料的內容 // 返回值:插入成功後 會將插入的新資料對應的id返回,如果返回-1代表插入失敗 long l = db.insert(TABLE_NAME, null, values); Toast.makeText(this, "" + l, Toast.LENGTH_SHORT).show(); db.close(); } // 使用sql語句刪除資料 public void delete1(View view) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "delete from t_user where c_age = ?"; db.execSQL(sql, new Object[] { 40 }); db.close(); } // 使用Android自帶api刪除資料 public void delete2(View view) { SQLiteDatabase db = helper.getWritableDatabase(); // int i = db.delete(TABLE_NAME, null, null);//全刪 // 引數1:表名 引數2:刪除的篩選條件 引數3:?的實際值 返回值:刪除資料的條數 int i = db.delete(TABLE_NAME, "c_phone = ?", new String[] { "888" }); Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show(); db.close(); } // 使用sql語句修改資料 public void update1(View view) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "update t_user set c_phone = ? where c_name = ?"; db.execSQL(sql, new Object[] { "111", "鋼鐵俠" }); db.close(); } // 使用Android自帶api修改資料 public void update2(View view) { SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("c_name", "浩克"); // 引數1:表名 引數2:需要設定的新的欄位和值 引數3:篩選條件 引數3:?的實際值 返回值:成功修改的資料條數 int i = db.update(TABLE_NAME, values, "c_age > ?", new String[] { 19 + "" }); Toast.makeText(this, "" + i, Toast.LENGTH_SHORT).show(); db.close(); } // 使用sql語句查詢資料 public void query1(View view) { SQLiteDatabase db = helper.getWritableDatabase(); String sql = "select * from t_user"; Cursor cursor = db.rawQuery(sql, null); // 是否有下一條資料 while (cursor.moveToNext()) { // 獲取索引為0那一列的資料 其實是id int id = cursor.getInt(0); // 獲取索引為1那一列的資料 其實是name String name = cursor.getString(1); // 獲取索引為2那一列的資料 其實是age int age = cursor.getInt(2); // 獲取索引為3那一列的資料 其實是phone String phone = cursor.getString(3); // 封裝一個User類管理這四個資料 User user = new User(id, name, age, phone); // 把當前user物件新增到一個集合中去 al.add(user); } // 檢測資料 Log.d("tag", al.toString()); // 關閉遊標和資料庫 cursor.close(); db.close(); } // 使用Android自帶api查詢資料 public void query2(View view) { SQLiteDatabase db = helper.getWritableDatabase(); // 查詢所有 Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null); // Cursor cursor = db.query(TABLE_NAME, // new String[] { "c_name", "c_age" }, "c_age < ?", // new String[] { "" + 20 }, null, null, null); // 是否有下一條資料 while (cursor.moveToNext()) { // 獲取索引為0那一列的資料 其實是id int id = cursor.getInt(0); // 獲取索引為1那一列的資料 其實是name String name = cursor.getString(1); // 獲取索引為2那一列的資料 其實是age int age = cursor.getInt(2); // 獲取索引為3那一列的資料 其實是phone String phone = cursor.getString(3); // 封裝一個User類管理這四個資料 User user = new User(id, name, age, phone); // 把當前user物件新增到一個集合中去 al.add(user); } // 關閉遊標和資料庫 cursor.close(); db.close();