首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android SQLite 開發入門:從創建表到增刪改查完整流程

     編輯:程式設計疑難解答

核心類

  • SQLiteOpenHelper:管理數據庫創建/升級。
  • SQLiteDatabase:執行 SQL、事務、查詢。
  • Cursor:結果集游標。

完整示例

public class DBHelper extends SQLiteOpenHelper {
    static final String DB_NAME = "demo.db";
    static final int VERSION = 1;

    public DBHelper(Context ctx) { super(ctx, DB_NAME, null, VERSION); }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE user(_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldV, int newV) {
        db.execSQL("DROP TABLE IF EXISTS user");
        onCreate(db);
    }
}

// 使用
DBHelper helper = new DBHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();

// 插入
ContentValues cv = new ContentValues();
cv.put("name", "Alice");
cv.put("age", 20);
db.insert("user", null, cv);

// 查詢
Cursor c = db.query("user", null, null, null, null, null, null);
while (c.moveToNext()) {
    Log.d("DB", c.getString(c.getColumnIndex("name")));
}
c.close();
db.close();

UI 交互綁定

Button btnAdd = findViewById(R.id.btnAdd);
btnAdd.setOnClickListener(v -> {
    String name = etName.getText().toString();
    int age = Integer.parseInt(etAge.getText().toString());
    ContentValues cv = new ContentValues();
    cv.put("name", name);
    cv.put("age", age);
    db.insert("user", null, cv);
    // 刷新列表
    cursorAdapter.swapCursor(db.query("user", null, null, null, null, null, null));
});

最佳實踐

  • 數據庫操作放在子線程**(RxJava/Coroutines/AsyncTask),避免 ANR。
  • 使用 Room** (Jetpack) 替代裸 SQLite,編譯期校驗 SQL、LiveData 自動刷新。
  • 事務批量寫入:db.beginTransaction() ... db.setTransactionSuccessful() ... db.endTransaction()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved