標籤

2015年11月6日 星期五

SQLite基本應用--寫入、讀取

Android系統內建「SQLite」資料庫,它是一個開放的小型資料庫,儲存資料的數量是根據裝置的儲存空間決定的,今天來撰寫個基本的小程式來熟悉資料庫的讀寫。

這次也順便嘗試button事件另一種寫法,先前在button基礎練習篇有看到那時的寫法是用一個Listener來偵測button有沒有被按下,但有些書上還會要我們在mail主檔上的button加入

android:onClick=這個描述既然都有Listener來偵測那幹嘛還要加入這個描述就算拿掉指令也OK,其實這是兩種寫法

1.用Listener去偵測事件
2.直接用button的佈局檔來描述


其實兩種都能達成我們的目的
這一次我們就用第二種我認為比較簡單的方法寫看看


上圖為這次的佈局兩個button和一個Textview




這次我們在布局檔中加上onclick描述


然後我們要先來學習如何創建資料庫(以下稱為DB),在oncreate的階段我們就必須把DB創建完成,
創建一個資料表(以下稱為TB),欄位為name、phone、mail


db=openOrCreateDatabase(dbname, Context.MODE_PRIVATE,null);
//建立資料庫名稱模式為私人模式String createTable="CREATE TABLE IF NOT EXISTS "+
 tbname+
 "(name VARCHAR(32),"+
 "phone VARCHAR(16),"+
 "mail VARCHAR(64))";
db.execSQL(createTable);//創建並定義資料表架構


public void readData(View view){//負責讀取
 String str="";
 displayData("I am read data");
 Cursor cursor=db.rawQuery("SELECT * FROM "+tbname,null);
 if(cursor.getCount()==0){
 displayData("tb is null");
 return;
 }
 if(cursor.moveToFirst()){
 do{
 str+="name:"+ cursor.getString(0)+"\n";
 str+="phone:"+ cursor.getString(1)+"\n";
 str+="mail:"+ cursor.getString(2)+"\n";
 str +="\n";
 }while (cursor.moveToNext());//逐行讀取
 }
 displayData(str);//顯示資料
 }

public void writeData(View view){
 displayData("I am write data");
 addData("linrichard", "0980416449", "linrichard@yahoo.com.tw");
}

private void displayData(String message) {
 TextView print=(TextView) findViewById(R.id.textView);
 print.setText(message);
}

private void addData(String name, String phone, String mail) {
 ContentValues hm =new ContentValues();
 hm.put("name",name);
 hm.put("phone",phone);
 hm.put("mail",mail);

 db.insert(tbname,null,hm);


}




上面可以看到writeData和readData的傳入參數都是設為view這樣就能完成事件連結,這裡分成讀取跟寫入


讀取:用cursor物件下達查詢指令如果裡面有資料則移動到第一筆用do-while逐行讀出並在display函數負責顯示

寫入:用ContentValues("key",value)將資料insert進資料庫中


以下為結果畫面

資料表為空則顯示tb is null
寫入




讀取




































如果要清理資料庫資料可在App管理中clear data


沒有留言:

張貼留言