iLMS知識社群歷程檔登入
位置: 網路程式設計 > 作業 > NetProg100_BN_課堂練習_20120517_02SQLite DB
作業資訊  |  已交名單(28)
項目 內容
允許遲交
開放觀摩
屬性 個人作業
成績比重 2%
期限
2012-05-17 23:59
附件 1. BN98000Ex051002.zip (23 KB)
2. GDA204.apk (18 KB)
描述 as title.

Best Regards,
James

// ------- GDD02.java ---

package COM.TQC.GDD02;


import android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteCursor;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.EditText;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;


public class GDD02 extends Activity

{

  private MyDbHelper gaaSQLiteOpenHelper;

  private Cursor myCursor;

  private ListView myListView;

  private EditText myEditText;

  private int _id;

  protected final static int MENU_ADD = Menu.FIRST;

  protected final static int MENU_EDIT = Menu.FIRST + 1;

  protected final static int MENU_DELETE = Menu.FIRST + 2;


  @Override

  public boolean onOptionsItemSelected(MenuItem item)

  {

    super.onOptionsItemSelected(item);

    switch (item.getItemId())

    {

      case MENU_ADD:

        this.addTodo();

        break;

      case MENU_EDIT:

        this.editTodo();

        break;

      case MENU_DELETE:

        this.deleteTodo();

        break;

    }

    return true;

  }


  @Override

  public boolean onCreateOptionsMenu(Menu menu)

  {

    super.onCreateOptionsMenu(menu);

    menu.add(10000, MENU_ADD, 1, R.string.strAddButton);

    menu.add(10000, MENU_EDIT, 2, R.string.strEditButton);

    menu.add(10000, MENU_DELETE, 3, R.string.strDeleteButton);

    return true;

  }


  MyDbHelper helper;

private OnItemClickListener myListener = new ListView.OnItemClickListener(){


@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

// TODO Auto-generated method stub

myCursor.moveToPosition(arg2);

_id = myCursor.getInt(0);

}};

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);


    myListView = (ListView) this.findViewById(R.id.myListView);

    myEditText = (EditText) this.findViewById(R.id.myEditText);

    //

    helper = new MyDbHelper( this, MyDbHelper.DATABASE_NAME, null, 1);

    //

    myListView.setOnItemClickListener(myListener );

    myCursor = helper.select();

    SimpleCursorAdapter adapter = 

new SimpleCursorAdapter(this,

                        R.layout.list, 

                        myCursor,

                        new String[] { MyDbHelper.FIELD_TEXT },

                        new int[] { R.id.listTextView1 });

    myListView.setAdapter(adapter);

  }

  private void addTodo()

  {

 String text = myEditText.getText().toString();

      helper.insert(text);

      myCursor.requery();

  }

  private void editTodo()

  {

 String text = myEditText.getText().toString();

      helper.update( _id, text);

      myCursor.requery();

  }

  private void deleteTodo()

  {

      helper.delete(_id);

      myCursor.requery();

  }

}


///------------ MyDBHelper.java ---

package COM.TQC.GDD02;


import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteOpenHelper;


public class MyDbHelper extends SQLiteOpenHelper

{

  public final static String DATABASE_NAME = "todo_db";

  private final static int DATABASE_VERSION = 1;

  private final static String TABLE_NAME = "todo_table";

  public final static String FIELD_id = "_id";

  public final static String FIELD_TEXT = "todo_text";

  

  public MyDbHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

// TODO Auto-generated constructor stub

  }


  @Override

  public void onCreate(SQLiteDatabase db) {

  // TODO Auto-generated method stub

  String sql = String.format("create table %s(%s integer primary key autoincrement, "+

                                            "%s text)", TABLE_NAME, FIELD_id, FIELD_TEXT);

    db.execSQL(sql);

  }


  @Override

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

  // TODO Auto-generated method stub

 

  }


  public Cursor select()

  {

      String sql = "select * from todo_table";

      return this.getReadableDatabase().rawQuery(sql, null);

  }


  public long insert(String text)

  {

 String sql = String.format(

  "insert into todo_table(todo_text) values('%s')",

  text);

      this.getWritableDatabase().execSQL(sql);

      return 0;

  }


  public void delete(int id)

  {

      String sql = "delete from todo_table where _id =" + id;

      this.getWritableDatabase().execSQL(sql); 

  }


  public void update(int id, String text)

  {

 String sql = String.format(

  "update todo_table set todo_text='%s' where _id=%d",

   text, id);

     this.getWritableDatabase().execSQL(sql);

  }


}