SQLite資料庫 靜宜大學資管系 楊子青
SQLite Android系統內建的資料庫 開放的小型資料庫,與一般商用的大型資料庫有類似的架構與用法 儲存資料的數量是根據裝置的儲存空間所決定 可以使用SQL執行需要的工作
1. 資料庫、資料表、資料欄位 資料庫(Database)是應用程式儲存與管理資料的單位 每一種在資料庫中的資料稱為資料表(Table) 應用程式可能需要儲存很多不同的資料,例如購物網的資料庫,包括會員、商品和訂單資料 每一種在資料庫中的資料稱為資料表(Table) 例如會員資料表可以儲存所有的會員資料 資料表用來儲存每一筆記錄的欄位(Column)
建立資料庫:openOrCreateDatabase() 建立資料表:CREATE TABLE()
用execSQL()執行"CREATE TABLE" 用 insert() 方法及 ContentValues 物件新增資料
建立一個新專案:SQLite onClick呼叫ReadData onClick呼叫SaveData
程式碼:變數宣告及初始設定 public class MainActivity extends AppCompatActivity { EditText u, s; TextView h; String db_name = "Game"; String tb_name = "UserScore"; SQLiteDatabase db; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); u = (EditText) findViewById(R.id.user); s = (EditText) findViewById(R.id.score); h = (TextView) findViewById(R.id.hero); }
程式碼:存入資料庫 public void SaveData(View v){ db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null); String createTable = "CREATE TABLE IF NOT EXISTS " + tb_name + "(user TEXT, score INT)"; db.execSQL(createTable); ContentValues cv = new ContentValues(2); cv.put("user", u.getText().toString()); cv.put("score", Integer.valueOf(s.getText().toString())); db.insert(tb_name, null, cv); Toast.makeText(this, "資料貯存成功", Toast.LENGTH_SHORT).show(); db.close(); }
程式碼:讀取資料庫 public void ReadData(View v){ db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null); Cursor c = db.rawQuery("Select * from " + tb_name + " order by score DESC", null); String hero = ""; if (c.getCount() != 0){ c.moveToFirst(); do{ hero += "score:" + Integer.toString(c.getInt(1)); hero += "; name:" + c.getString(0) + "\n"; } while(c.moveToNext()); } h.setText(hero); db.close();
執行結果 存放多筆 資料看看