2/10/2559

การเขียน android เชื่อมต่อ sqllite

ในระบบปฎิบัติการ Android นั้นจะมีฐานข้อมูล SQLite ติดมากับระบบปฎิบัติการ แล้ว หากเราต้องการพัฒนา Application ที่มีการใช้งานฐานข้อมูล เราสามารถเขียนโปรแกรมเพื่อใช้  SQLite บนระบบบปฎิบัติการ Android ได้ดังนี้


//สร้าง class ชื่อว่า  DbSQLite  โดยสืบทอดมาจาก SQLiteOpenHelper
public class DbSQLite extends SQLiteOpenHelper
{
    private String dbName="";//property ชื่อ database 
    private String sql="";//คำสั่ง sql ที่ต้องการให้ทำงาน

  //สร้าง constructor ให้กับ class 
    public DbSQLite(Context context, String dbName, SQLiteDatabase.CursorFactory factory, int version,String sql)
  {
        super(context,dbName,factory,version);
       this.dbName = dbName;//กำหนด database name ให้กับ object
       this.sql=sql;//กำหนด คำสั่ง sql ที่ต้องการให้ทำงาน

    }
 
    //Method สำหรับ รันคำสั่ง sql select โดยจะ return เป็น array  2 มิติตามคำสั่ง sql ที่ส่งมา
    public String[][] get_table()
    {
        SQLiteDatabase myDb=this.getReadableDatabase();
        Cursor c=myDb.rawQuery(this.sql, null);
        String re_str[][]=new String[0][0];
        if(c!=null)
        {
            int row_count=0;
            re_str=new String[c.getCount()][c.getColumnCount()];
            if(c.moveToFirst()){
                //สร้าง array 2 มิติ จากคำสั่ง sql เพื่อส่งค่ากลับ
                do{

                    int i;
                    for(i=0;i<c.getColumnCount();i++) //วน loop Column  ที่ได้จากคำสั่ง sql
                    {
                        re_str[row_count][i]=c.getString(i);
                    }

                    row_count++;

                }while(c.moveToNext()); //วน loop แถวข้อมูล ที่ได้จากคำสั่ง sql

            }
        }

        c.close();
        myDb.close();
        return re_str;
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

   //Method สำหรับ รันสำสั่ง create table,insert, delete, update
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
    {
        db.execSQL(this.sql);
    }
}

ตัวอย่างการใช้งาน Class DbSQLite

การสร้างตาราง 

//สร้างคำสั่ง sql ที่ต้องการ String sql="CREATE TABLE IF NOT EXISTS user" +
                "(" +
                "user_id integer primary key autoincrement," +
                "username text," +
                "password text"+
                ")";

SQLiteDatabase sqlite;
//ส่งคำสั่ง sql ให้ sqlite โดย class DbSQLite
DbSQLite db = new DbSQLite(this," ชื่อ Database ",null,1,sql);
sqlite = db.getWritableDatabase();
db.onUpgrade(sqlite,1,1);//ให้ sqlite ทำงานตามคำสั่ง sql ที่ส่งไป


การอ่านข้อมูลจากตาราง

//สร้างคำสั่ง SQL
String sql="SELECT * FROM user ";
//สร้าง object จาก class  DbSQLite เพื่ออ่านข้อมูลจาก Database และ ส่ง คำสั่ง SQL ให้  SQL Lite
DbSQLite  db = new DbSQLite(this,"MyDressMakerShop",null,1,sql);
String[][] user =db.get_table();//รับผลลัพธ์เป็น Array 2 มิติ ตามคำสั่ง sql