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.youkuaiyun.com/source/3562941
本文详细介绍了在Android应用中如何使用SQLite数据库进行数据持久化操作,包括数据库创建、表创建、数据插入、数据删除及数据查询等基本功能实现。通过实例代码展示,帮助开发者更好地理解和掌握SQLite数据库在Android开发中的应用。
363

被折叠的 条评论
为什么被折叠?



