僑光科技大學 蔡存孝老師 解說參考:http://rs2.ocu.edu.tw/~tsay/files/TQC204.pdf
GDD02.java - Activity主體
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.widget.AdapterView; import android.widget.EditText; import android.widget.ListView; import android.widget.SimpleCursorAdapter; public class GDD02 extends Activity { private mySQLiteOpenHelper 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); //first menu.add(0, MENU_ADD, 0, getString(R.string.strAddButton)); menu.add(0, MENU_EDIT, 0, getString(R.string.strEditButton)); menu.add(0, MENU_DELETE, 0, getString(R.string.strDeleteButton)); // return true; } /** 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); gaaSQLiteOpenHelper = new mySQLiteOpenHelper(this); myCursor = gaaSQLiteOpenHelper.select(); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list, myCursor, new String[] { gaaSQLiteOpenHelper.FIELD_TEXT }, new int[] { R.id.listTextView1 }); myListView.setAdapter(adapter); myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { myCursor.moveToPosition(arg2); _id = myCursor.getInt(0); myEditText.setText(myCursor.getString(1)); } }); } private void addTodo() { //second call gaaSQLiteOpenHelper SQL insert method gaaSQLiteOpenHelper.insert(myEditText.getText().toString()); myCursor.requery(); // } private void editTodo() { //second call gaaSQLiteOpenHelper SQL update method gaaSQLiteOpenHelper.update(_id, myEditText.getText().toString()); myCursor.requery(); // } private void deleteTodo() { //second call gaaSQLiteOpenHelper SQL delete method gaaSQLiteOpenHelper.delete(_id); myCursor.requery(); // } }
mySQLiteOpenHelper
package COM.TQC.GDD02; import java.nio.charset.CodingErrorAction; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class mySQLiteOpenHelper extends SQLiteOpenHelper { private 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 mySQLiteOpenHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id + " INTEGER primary key autoincrement, " + " " + FIELD_TEXT + " text)"; db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String sql = "DROP TABLE IF EXISTS " + TABLE_NAME; db.execSQL(sql); onCreate(db); } public Cursor select() { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_NAME, null, null, null, null, null, null); return cursor; } public void insert(String text) { SQLiteDatabase db = this.getWritableDatabase(); // add date ContentValues cv = new ContentValues(); cv.put(FIELD_TEXT, text); db.insert(TABLE_NAME, null, cv); // } public void delete(int id) { SQLiteDatabase db = this.getWritableDatabase(); // String where = FIELD_id + " = " + id; // delete date db.delete(TABLE_NAME, where, null); // } public void update(int id, String text) { SQLiteDatabase db = this.getWritableDatabase(); // String where = FIELD_id + " = " + id; // update date ContentValues cv = new ContentValues(); cv.put(FIELD_TEXT, text); db.update(TABLE_NAME, cv, where, null); // } }以下圖片為android程式建立的database所在位置