2011年11月30日 星期三

資料庫連結並新增

package com.demo.android.SQLiteA;

import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class SQLiteAActivity extends Activity {
   
    static String TABLE_NAME = "Users"; //表格名稱
    static String NAME = "name";        //姓名
    static String ADDRESS = "address";     //住址
    static String PHONE = "phone";         //電話
   
    DBConnection dbconn;
   
   
    /** Called when the activity is first created. */
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        TextView show=(TextView)findViewById(R.id.show);
        //insert Button
        OnClickListener OnInsertClick = null;
       
       
        dbconn = new DBConnection(this);
        //取得可寫入的資料庫
        SQLiteDatabase db = dbconn.getWritableDatabase();
       
        //查詢資料表
        Cursor c = db.query(TABLE_NAME, new String[] {NAME,PHONE,ADDRESS}, null, null, null, null, null);
            //移至第一筆資料
       c.moveToFirst();
            //如果資料筆數大於0 才讀取資料
       if(c.getCount()> 0)
       show.setText("name="+c.getString(0)+",phone="+c.getString(1)+",address="+c.getString(2));
      
        c.close();
        //設定Onclick函數
        OnInsertClick=new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            //ContentValues 是負責儲存一對值,但是它儲存的一個是String類型,其他是基本類型
            ContentValues values = new ContentValues();
            values.put(NAME, ((EditText)findViewById( R.id.username)).getText().toString());
            values.put(PHONE, "0912345678");
            values.put(ADDRESS, "TAIWAN");
            //執行寫入資料庫
            SQLiteDatabase db = dbconn.getWritableDatabase();
            db.insert(TABLE_NAME, null, values);
            db.close();
            onCreate(savedInstanceState);
        }
       
        };
       
        Button insertBtn=(Button)findViewById(R.id.insert);
        //建立insertBtnOnclick事件
        insertBtn.setOnClickListener(OnInsertClick);
    }
   
   
  //建立資料庫PhoneDBTable:Users
    public static class DBConnection extends SQLiteOpenHelper {
       private static final String DATABASE_NAME = "PhoneDB";
       private static final int DATABASE_VERSION = 2;
       private DBConnection(Context ctx) {
           //context=內容物件 DATABASE_NAME=傳入的資料庫名稱 null=複雜查詢時使用 DATABASE_VERSION=資料庫版本
           super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
       }
       public void onCreate(SQLiteDatabase db) {
           String sql = "CREATE TABLE " + TABLE_NAME + " (" 
           + NAME + " text not null, "
           + PHONE + " text not null, "
           + ADDRESS + " text not null" + ");";
          
           db.execSQL(sql); 
       }
       public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
           // TODO Auto-generated method stub 
       }
    }
}

沒有留言:

張貼留言