Android中需要持久化的数据一般都保存在一个轻量级的数据库SQLite中。实际使用中一般是创建一个DBHelper类执行具体操作,并将结果反馈给UI。
例子如下:
数据库操作类DBHelper:
package com.freesoft.utility; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.util.Log; public class DBHelper { private static final String TAG = "TestDB_DBHelper.java"; private static final String TABLE_NAME = "TestDB"; private Cursor cur = null; private SQLiteDatabase db = null;; private Context context = null; public DBHelper(Context context) { this.open(context); } public void open(Context context) { if (null == db || !db.isOpen()) { this.context = context; db = context.openOrCreateDatabase(this.TABLE_NAME, context.MODE_PRIVATE, null); createTabel(); Log.v(this.TAG, "Create or Open DataBase。。。"); } } public void close() { db.close(); db = null; } private void createTabel() { String sql = ""; try { sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + "ID INTEGER PRIMARY KEY autoincrement, " + "NAME TEXT, " + "NICKNAME TEXT, " + "AGE INTEGER, " + "EMAIL TEXT)"; db.execSQL(sql); } catch (SQLException e) { Log.v(TAG, "Create Table failed."); } } public boolean insert(String username, String nickname, int age, String email) { if (db == null) open(this.context); String sql = "insert into " + TABLE_NAME + " values(null,'" + username + "','" + nickname + "'," + age + ",'" + email + "'" + ")"; try { db.execSQL(sql); return true; } catch (SQLException e) { Log.v(TAG, "Insert Record failed."); return false; } } public boolean delete(int id) { if (db == null) open(this.context); String sql = "DELETE FROM " + TABLE_NAME + " WHERE ID=" + id; try { db.execSQL(sql); return true; } catch (SQLException e) { Log.v(TAG, "Delete Record failed."); return false; } } public Cursor queryData() { if (db != null) { cur = db.query(TABLE_NAME, new String[] { "ID", "NAME", "NICKNAME", "AGE", "EMAIL" }, null, null, null, null, null); return cur; } else return null; } }
UI展示类DatabaseActivity:
package com.freesoft.anttest; import com.freesoft.utility.DBHelper; import android.app.Activity; import android.database.Cursor; import android.os.Bundle; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.view.View; import android.view.View.OnClickListener; public class DatabaseActivity extends Activity { @Override protected void onDestroy() { if (db != null) { db.close(); db = null; } super.onDestroy(); } /** Called when the activity is first created. */ private EditText et_id = null; private EditText et_username = null; private EditText et_nickname = null; private EditText et_age = null; private EditText et_email = null; private Button btn_next = null; private Button btn_prev = null; private Button btn_del = null; private Button btn_insert = null; private DBHelper db = null; private Cursor cur = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.database); findControls(); initControls(); } private void initControls() { db = new DBHelper(this); db.open(this); // 浏览所有数据 cur = db.queryData(); if (cur != null) cur.moveToFirst(); refreshUI(); } private void refreshUI() { // 确保cur内存有有效数据 if ((cur != null) && (cur.getCount() > 0)) { btn_del.setEnabled(true); et_id.setText(cur.getInt(0) + ""); et_username.setText(cur.getString(1)); et_nickname.setText(cur.getString(2)); et_age.setText(cur.getInt(3) + ""); et_email.setText(cur.getString(4)); if (cur.isLast()) btn_next.setEnabled(false); else btn_next.setEnabled(true); if (cur.isFirst()) btn_prev.setEnabled(false); else btn_prev.setEnabled(true); } else { btn_next.setEnabled(false); btn_prev.setEnabled(false); btn_del.setEnabled(false); et_id.setText(""); et_username.setText(""); et_nickname.setText(""); et_age.setText(""); et_email.setText(""); } } private void findControls() { et_id = (EditText) findViewById(R.id.et_db_id); et_username = (EditText) findViewById(R.id.et_db_username); et_nickname = (EditText) findViewById(R.id.et_db_nickname); et_age = (EditText) findViewById(R.id.ed_db_age); et_email = (EditText) findViewById(R.id.ed_db_email); btn_next = (Button) findViewById(R.id.btn_db_next); btn_prev = (Button) findViewById(R.id.btn_db_prev); btn_del = (Button) findViewById(R.id.btn_db_del); btn_insert = (Button) findViewById(R.id.btn_db_insert); btn_next.setOnClickListener(new btnnext_onclick()); btn_prev.setOnClickListener(new btnprev_onclick()); btn_del.setOnClickListener(new btndel_onclick()); btn_insert.setOnClickListener(new btninsert_onclick()); } public static int IntWrapper(String s, int defaultvalue) { try { return Integer.parseInt(s); } catch (Exception e) { return defaultvalue; } } class btnnext_onclick implements OnClickListener { @Override public void onClick(View arg0) { DatabaseActivity.this.cur.moveToNext(); refreshUI(); } } class btnprev_onclick implements OnClickListener { @Override public void onClick(View arg0) { DatabaseActivity.this.cur.moveToPrevious(); refreshUI(); } } class btndel_onclick implements OnClickListener { @Override public void onClick(View arg0) { if (db != null) { db.delete(DatabaseActivity.IntWrapper(et_id.getText() .toString(), 1)); cur = db.queryData(); cur.moveToFirst(); refreshUI(); } } } class btninsert_onclick implements OnClickListener { @Override public void onClick(View arg0) { if (db != null) { db.insert(et_username.getText().toString(), et_nickname .getText().toString(), DatabaseActivity.IntWrapper( et_age.getText().toString(), 1), et_email.getText() .toString()); cur = db.queryData(); cur.moveToLast(); refreshUI(); } } } }
老规矩,具体工程下载地址参见:
http://download.csdn.net/source/3562941