Android演示操作数据库之二
来源:互联网 发布:淘宝上的晚礼服 编辑:程序博客网 时间:2024/06/05 02:39
Android演示操作数据库SQLite之二,演示如何使用SQLiteOpenHelper。
Android开发中还可以使用SQLiteOpenHelper的子类操作数据库,具体步骤如下:
- 继承SQLiteOpenHelper得到SuperDBHelper子类,实现构造函数、onCreate、onUpgrade等方法;
- 实现数据库查询、插入、删除等方法;
- Activity中构造SuperDBHelper对象,然后使用;
具体代码如下(演示例子参见点击打开链接):
SuperDBHelper.java
package com.freesoft.utility;import android.content.ContentValues;import android.content.Context;import android.database.Cursor;import android.database.SQLException;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteDatabase.CursorFactory;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;public class SuperDBHelper extends SQLiteOpenHelper {private static String TAG="SQLiteOpenHelper";private static int VERSION = 1;private static String TABLE_NAME = "myTestTable";public SuperDBHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);}public SuperDBHelper(Context context, String name, int version) {this(context, name, null, 1);}public SuperDBHelper(Context context, String name) {this(context, name, VERSION);}public SuperDBHelper(Context context) {this(context, TABLE_NAME);}@Overridepublic void onCreate(SQLiteDatabase db) {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.");}}@Overridepublic void onUpgrade(SQLiteDatabase db, int iOldVer, int iNewVer) {String sql = "";try {sql = "DROP TABLE IF EXISTS " + TABLE_NAME;db.execSQL(sql);onCreate(db);} catch (SQLException e) {Log.v(TAG, "Upgrade Table failed.");}}public void addRecord(String username, String nickname, int age, String email){ContentValues values = new ContentValues();values.clear();values.put("NAME", username);values.put("NICKNAME", nickname);values.put("AGE", age);values.put("EMAIL", email);this.getWritableDatabase().insert(TABLE_NAME, null, values);}public Cursor queryAll(){return this.getReadableDatabase().query(TABLE_NAME, null, "ID>?", new String[]{"0"},null, null, null);}public void delRecord(int id){this.getWritableDatabase().delete(TABLE_NAME, "ID=?", new String[]{String.format("%d", id)});}}
使用SuperDBHelper的Activity:
package com.freesoft.anttest;import com.freesoft.utility.IntWrapper;import com.freesoft.utility.SuperDBHelper;import android.app.Activity;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class SuperDatabaseActivity extends Activity {private static String TABLE_NAME = "testtable";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 SuperDBHelper dbhelper = null;private Cursor cur = null;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.database);findControls();initControls();}private void initControls() {dbhelper = new SuperDBHelper(SuperDatabaseActivity.this, TABLE_NAME);cur = dbhelper.queryAll();if (cur != null) {cur.moveToFirst();refreshUI();}}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());}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);elsebtn_next.setEnabled(true);if (cur.isFirst())btn_prev.setEnabled(false);elsebtn_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("");}}class btnnext_onclick implements OnClickListener {@Overridepublic void onClick(View arg0) {if (cur != null) {cur.moveToNext();refreshUI();}}}class btnprev_onclick implements OnClickListener {@Overridepublic void onClick(View arg0) {if (cur != null) {cur.moveToPrevious();refreshUI();}}}class btndel_onclick implements OnClickListener {@Overridepublic void onClick(View arg0) {dbhelper.delRecord(IntWrapper.wrap(et_id.getText().toString(), 1));cur = dbhelper.queryAll();if (cur != null) {cur.moveToFirst();refreshUI();}}}class btninsert_onclick implements OnClickListener {@Overridepublic void onClick(View arg0) {dbhelper.addRecord(et_username.getText().toString(), et_nickname.getText().toString(), IntWrapper.wrap(et_age.getText().toString(), 1), et_email.getText().toString());cur = dbhelper.queryAll();cur.moveToLast();refreshUI();}}}
- Android演示操作数据库之二
- Android演示数据库操作
- Android开发集锦之二:android中的数据库操作
- Android下SQLite3数据库操作笔记(二)之-SQLiteOpenHelper
- 【Android 开发】:数据存储之 SQLite 数据库操作(二)
- android 之 数据库操作
- Android之数据库操作
- Android之SQLite数据库操作
- android 数据之数据库操作
- android数据库操作之cursor
- Android之sqlite数据库操作
- Android下演示操作WIFI
- Android数据库的Demo演示
- 工作项目总结(二)之数据库操作
- 使用psycopg2操作PostgreSQL数据库之二
- 二 Qt之Sqlite数据库操作
- 数据存储之 SQLite 数据库操作(二)
- Qt5之数据库操作笔记(二)
- 全面掌握ISO8583报文协议
- JS模拟showModalDialog弹窗选择值
- Ext.dd.DragZone 拖拽
- 24位真彩位图转4位(16色)灰度图(BMP) .
- 表达式前后缀表达形式 [zz]
- Android演示操作数据库之二
- 总结
- MAVEN POM元素参考
- Export ASP.NET Gridview data into MS-Excel sheet
- TMS320F280X SPI SPIA使用入门与总结
- Core Animation 曲线公式
- Linux和Windows下查看、设置环境变量的比较
- 利用Rational Rose进行C++代码的逆向工程介绍
- C语言嵌入式系统编程修炼之软件架构篇 2