iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
Mobile Development

Android Studio 學習交流系列 第 25

[Day25]Android學習-創新挑戰-健康管理app(3)

  • 分享至 

  • xImage
  •  

本篇重點

  1. 設計資料操作方式
  2. 應用資料新增方法
  3. 應用資料刪除方法

應具備能力

  1. Android學習-資料庫介紹-資料操縱(1)
  2. Android學習-資料庫介紹-SQLiteDataBase類別(2)
  3. Android學習-資料庫介紹-資料庫實作(3)

製作專案

這篇將介紹如何建立類別下的各個方法達成創立資料庫以及建立各種操縱資料的方法,以下將創建HealthDB類別:

HealthDB.java

public class HealthDB {
    //建立SQLiteDatabase物件
    private static SQLiteDatabase db=null;

    private final static String TABLE_NAME="TableHealth";
    //    建立欄位名稱
    //    編排編號
    private final static String _ID="_id";
    private final static String DATE="date";
    //    收縮壓
    private final static String HIGH="high";
    //    舒張壓
    private final static String LOW="low";
    //    脈搏數
    private final static String BUMP="bump";
    //    建立表格
    private final static String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+_ID+" INTEGER PRIMARY KEY,"
            + DATE +" TEXT,"+HIGH+" INTEGER,"+LOW+" INTEGER ,"+BUMP+" INTEGER"+" )";
    private Context context;
    ......
    }
  • SQLiteDatabase db 建立SQLiteDatabase物件
  • TABLE_NAME 建立欄位名稱
  • _ID 編排編號
  • DATE 新增日期
  • HIGH 收縮壓數值
  • LOW 舒張壓數值
  • BUMP 脈搏數值
  • CREATE_TABLE 建立血壓紀錄表格,使用SQL語法編寫

完整程式碼

public class HealthDB {
    //建立SQLiteDatabase物件
    private static SQLiteDatabase db=null;

    private final static String TABLE_NAME="TableHealth";
    //    建立欄位名稱
    //    編排編號
    private final static String _ID="_id";
    private final static String DATE="date";
    //    收縮壓
    private final static String HIGH="high";
    //    舒張壓
    private final static String LOW="low";
    //    脈搏數
    private final static String BUMP="bump";
    //    建立表格
    private final static String CREATE_TABLE="CREATE TABLE "+TABLE_NAME+" ("+_ID+" INTEGER PRIMARY KEY,"
            + DATE +" TEXT,"+HIGH+" INTEGER,"+LOW+" INTEGER ,"+BUMP+" INTEGER"+" )";
    private Context context;

    //    FruitDB的建構式
    public HealthDB(Context context){
        this.context=context;
    }
    //     建立open()方法,資料庫存執行開啟資料庫,尚未存在則建立資料庫
    public void open() throws SQLException {
        try{
            //        建立資料庫並指定權限
            db=context.openOrCreateDatabase("HealthDB.db",Context.MODE_PRIVATE,null);
            //        建立表格
            db.execSQL(CREATE_TABLE);

        }
        catch (Exception e){

//            Toast.makeText(context,"HealthDB.db 已建立",Toast.LENGTH_LONG).show();
            Log.d("Debug","HealthDB.db 已建立");
        }

    }

    //    建立新增、修改(更新)、刪除,資料操作
    //    execSQL完整輸入SQL語法實現,資料操作

    //    建立方法append()
    public void append(String date,int high,int low,int bump){
        String insert_text="INSERT INTO "+TABLE_NAME+"( "+DATE+","+HIGH+","+LOW+","+BUMP+") values ('"+date+"',"+high+","+low+","+bump+")";
        db.execSQL(insert_text);

    }
    //    建立方法update()
    public void update(int name,int price,long id){
        String update_text="UPDATE "+TABLE_NAME+" SET "+HIGH+"="+name+","+LOW+"="+price+" WHERE "+_ID+"="+id;
        db.execSQL(update_text);

    }
    //    建立方法delete()
    public void delete(long id){
        String delete_text="DELETE FROM "+TABLE_NAME+" WHERE "+_ID+"="+id;
        db.execSQL(delete_text);

    }
    //    建立查詢方法select(),查詢單筆資料
    //    rawQuery完整輸入SQL語法實現資料查詢
    public Cursor select(long id){
        String select_text="SELECT * FROM "+TABLE_NAME+" WHERE "+_ID+"="+id;
        Cursor cursor=db.rawQuery(select_text,null);
        return cursor;
    }

    //    建立查詢方法select_all(),查詢所有資料
    //    rawQuery完整輸入SQL語法實現資料查詢
    public Cursor select_all(){
        String select_text="SELECT * FROM "+TABLE_NAME;
        Cursor cursor=db.rawQuery(select_text,null);
        return cursor;
    }
}

成果

由於使用者輸入血壓心跳的介面還沒創建,所以沒辦法看到成果。不過,下一篇將繼續努力,將設計輸入血壓與心跳的使用者介面!加油!

/images/emoticon/emoticon49.gif/images/emoticon/emoticon47.gif

若文章有誤,歡迎大家提出建議。

Thank you for your time.


上一篇
[Day24]Android學習-創新挑戰-健康管理app(2)
下一篇
[Day26]Android學習-創新挑戰-健康管理app(4)
系列文
Android Studio 學習交流30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言