2013年8月27日 星期二

Android SQLite用法

首先新增一個Class,名稱訂為DbHelper

package com.example.myapplication;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;


public class DbHelper extends SQLiteOpenHelper {
    public static final int DATABASE_VERSION = 1;  //資料庫版本
    public static final String DATABASE_NAME = "dataBase.db";  //資料庫名稱
    public static final  String TABLE_NAME="tableName";  //資料表名稱


    public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

//新增資料表動作
    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE "+TABLE_NAME+" (chnl varchar(10),progdate varchar(10),playdate varchar(10),playtime varchar(5),progname varchar(50))");
    }

//資料庫升級動作,目前資料庫版本號碼和程式上定義的不同時,就會觸發升級動作
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);
        onCreate(db);
    }


在MainActivity.java中加入

//新增資料進資料庫
        public void addDb(String chnl,String progdate,String playdate,String playtime,String progname){           
            SQLiteDatabase db =dbHelper.getWritableDatabase();
            ContentValues values = new ContentValues();
            values.put("chnl", chnl);
            values.put("progdate",progdate);
            values.put("playdate",playdate);
            values.put("playtime",playtime);
            values.put("progname",progname);
             //第一個值為table名稱,第二個值為當insert值為空時,會由null值取代,因為不允許值為空白,第三個值為新增的值
            db.insert("progPlay", null, values);
        }


//刪除資料
        public void delDb() {
            SQLiteDatabase db =dbHelper.getWritableDatabase();       
            //第一個值為資料表名稱,第二個值為條件,如果設為?號,可由第三個值裡的陣列值來套用
            db.delete("progPlay","chnl=?",new String[] { "001" });
       
        }

//取出資料庫裡的資料
public void viewDataBase(String chnl){
        Cursor cursor=dbHelper.getReadableDatabase().rawQuery("select * from progPlay where chnl='"+chnl+"'",null);
        String[] sNote = new String[cursor.getCount()];
        int rows_num = cursor.getCount();//取得資料表列數
        if(rows_num != 0) {
            cursor.moveToFirst();   //將指標移至第一筆資料
            for(int i=0; i<rows_num; i++) {              
                sNote[i]=cursor.getString(0)+" "+cursor.getString(1);
                cursor.moveToNext();//將指標移至下一筆資料
            }
            }
        cursor.close(); //關閉Cursor    
        }

SQLite使用上須注意幾點,SQLite沒有日期格式,日期只能以字串的方式存入,如果要篩選某個日期時可用where datetime('日期欄位名稱')=datetime('2013-08-01'),要注意日期的格式"2013-8-1"不等於"2013-08-01",在使用上要注意

沒有留言:

張貼留言