package tw.com.flag.ch15_hellosqlite;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    static final String db_name = "testDB";  //資料庫名稱
    static final String tb_name = "test";    //資料表名稱
    SQLiteDatabase db;  //資料庫物件

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //開啟或建立資料庫
        db = openOrCreateDatabase(db_name, Context.MODE_PRIVATE, null);

        String create = "CREATE TABLE IF NOT EXISTS" +
                            tb_name +   //資料表名稱
                            "(name VARCHAR(32)," +  //姓名欄位
                            "phone VARCHAR(16)," +  //電話欄位
                            "email VARCHAR(64))";   //email欄位

        db.execSQL(create);   //建立資料表

        Cursor c = db.rawQuery("SELECT * FROM " + tb_name, null);//查詢tb_name資料表中的所有資料

        if (c.getCount() == 0) { //若無資料,則立即新增2筆資料
            addData("Flag Publishing Co.", "02-23962357", "service@flag.com.tw");

            addData("PCDIY Magazine", "02-23214335", "service@pcdiy.com.tw");

            c = db.rawQuery("SELECT * FROM" + tb_name, null);//重新查詢
        }

        if (c.moveToFirst()) { //移到第1筆資料(若有資料才繼續)

            String str = "總共有" + c.getCount() + "筆資料\n";
            str += "----\n";


            do { //逐筆讀出資料, 並串接成訊息字串
                str += "name:" + c.getString(0) + "\n";
                str += "phone:" + c.getString(1) + "\n";
                str += "email:" + c.getString(2) + "\n";
                str += "----\n";
            } while (c.moveToNext());//有下一筆資料迴圈就繼續

            TextView txv = (TextView) findViewById(R.id.txv);
            txv.setText(str);//顯示訊息字串
        }

        db.close();
    }

    private void addData(String name, String phone, String email) {

        ContentValues cv = new ContentValues(3);//建立含3個資料項目的物件
        cv.put("name", name);
        cv.put("phone", phone);
        cv.put("email",email);

        db.insert(tb_name, null, cv);//把資料加到資料表
    }

}
