本文我们来实现一下Android内置SQLite数据库,该数据库对于创建它们的包套件是私有的,而且数据库不应该用来存贮文件。SQLite是一个轻量级的软件库,体积大小只用几千字节,一些SQL的指令只是部分支持,例如:ALTER、TABLE。

一、界面设置
首先设置界面如下,这里需要说明一下,完成界面描绘之后,可以不编写响应代码先运行,这样可以保证main.xml的无误。笔者曾经重复命名了两个button后直接编写响应代码,结果编写代码时发现总是出错,再看R.java里面一直没有id的class,导致了时间和精力的浪费。


二、常用对象方法
在程序中,我们实现若干基本操作,删除的过程中包括查找,显示的过程中包括遍历。在这个例子中,需要引入若干的以前没用到的库:android.database.sqlite.*;android.util.Log;android.content.Context;android.database.*;
参考 http://www.ophonesdn.com/forum/thread.do?topicId=eb0e8fe9-8898-11de-ba0c-e1dca3c51327&forumId=17 的例子(不过该例子有一些小问题),定义如下变量和常量
OnClickListener listener1 = null;
OnClickListener listener2 = null;
OnClickListener listener3 = null;
OnClickListener listener4 = null;
OnClickListener listener5 = null;
Button button1;
Button button2;
Button button3;
Button button4;
Button button5;
TextView tv;
DatabaseHelper mOpenHelper;
private static final String DATABASE_NAME = "dbForTest.db";
private static final int DATABASE_VERSION = 1;
private static final String TABLE_NAME = "diary";
private static final String TITLE = "title";
private static final String BODY = "body";

在create中编写如下代码:


在设置好界面之后,准备好按钮响应:


三、数据库初始化
在create的最后一行,创建了DatabaseHelper的一个对象,下面我们来看看这个对象是由什么构成的。
private static class DatabaseHelper extends SQLiteOpenHelper {
DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + " " + BODY + " " + ");";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

四、常用数据库操作
1.创建表
private void CreateTable() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();//获得一个SQLiteDatabase实例
String sql = "CREATE TABLE " + TABLE_NAME + " (" + TITLE + " " + BODY + " " + ");";
try {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
db.execSQL(sql);
setTitle("数据表成功重建");
} catch (SQLException e) {
setTitle("数据表重建错误");
}
}

2.删除表
private void dropTable() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String sql = "drop table " + TABLE_NAME;
try {
db.execSQL(sql);
setTitle("数据表成功删除:" + sql);
} catch (SQLException e) {
setTitle("数据表删除错误");
}
}

3.插入数据
private void insertItem() {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
String sql1 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
+ ") values('haiyang', 'android的发展真是迅速啊');";
String sql2 = "insert into " + TABLE_NAME + " (" + TITLE + ", " + BODY
+ ") values('icesky', 'Ophone的发展真是迅速啊');";
try {
db.execSQL(sql1);
db.execSQL(sql2);
setTitle("插入两条数据成功");
} catch (SQLException e) {
setTitle("插入两条数据失败");
}
}

4.删除数据
private void deleteItem() {
try {
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
db.delete(TABLE_NAME, " title = 'haiyang'", null);
setTitle("删除title为haiyang的一条记录");
} catch (SQLException e) {
}
}

5.显示记录
流程为:获取数据库实例,设置指针,显示记录数,移动指针,遍历并显示数据。
private void showItems() {
SQLiteDatabase db = mOpenHelper.getReadableDatabase();
String col[] = { TITLE, BODY };
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
Integer num = cur.getCount();
setTitle(Integer.toString(num) + " 条记录");
cur.moveToFirst();
tv.setText("");
while (cur.getPosition()!=cur.getCount())
{
tv.append(Integer.toString(cur.getPosition())+" , "+cur.getString(cur.getColumnIndex("title"))+" , "+cur.getString(cur.getColumnIndex("body"))+"\n");
cur.moveToNext();
}
}

五、执行结果
通过多次点击插入记录,显示结果如下:


更多相关文章

  1. 过滤Android工程中多余资源文件的解决方法
  2. android sqlit数据库升级,添加字段
  3. android 绑定sqlite数据库与程序一起发布
  4. System.Lazy延迟加载 在很多情况下,有些对象需要在使用时加载或根
  5. Android:用 SQLite 实现 用户的登录查询功能(详解+效果图)
  6. android操作sqlite数据库及心得
  7. Litepal初始化数据库问题研究
  8. android 数据库创建在SD(TF)卡中
  9. 增加改查――android数据库篇二

随机推荐

  1. android APK签名过程之MANIFEST.MF分析
  2. Android(安卓)单例模式与SharedPreferenc
  3. Android(安卓)App的签名打包(晋级篇)
  4. Android(安卓)应用开发笔记 - 下拉列表(Sp
  5. Android百度地图应用开发的前期准备
  6. Android(安卓)自定义View(二)函数分析
  7. Android面试系列文章2018之ListView篇
  8. Android存储(一)——SharedPreferences
  9. Android中的菜单-ContextMenu,PopupMenu
  10. Android:腾讯buglyDefaultApplicationLike