Android 数据存储(三)之数据库存储

来源:互联网 发布:云计算应用实例 编辑:程序博客网 时间:2024/05/23 19:09

Android内部有自己的数据库,Android也为我们提供了一个操作数据库的辅助类-SQLiteOpenHelper。使用这个类可以完成数据库的创建和升级。
1.创建数据库
在创建数据库之前,先自己定义一个类,继承SQLiteOpenHelper,用于程序中操作数据库。代码如下:

public class DbHelper extends SQLiteOpenHelper {    private static final String CREATE_PERSON_TABLE = "create table tb_person ("            + "id integer primary key autoincrement, "            + "name varchar(16), "            + "info text)";    private Context mContext;    public DbHelper(Context context, String name, CursorFactory factory,            int version) {        super(context, name, factory, version);        // TODO Auto-generated constructor stub        mContext = context;    }    @Override    public void onCreate(SQLiteDatabase db) {        // TODO Auto-generated method stub        db.execSQL(CREATE_PERSON_TABLE);    }    @Override    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {        // TODO Auto-generated method stub    }}

在主Activity的onCreate中添加函数createDB来创建数据库:

private void createDB() {    // TODO Auto-generated method stub    mDbHelper = new DbHelper(this, "person.db", null, 1);    mDbHelper.getWritableDatabase();}

点击运行程序,验证数据库是否已经生成,这要借助Android自带的一个工具-sqlite3.exe。它在sdk\platform-tools目录下。在cmd窗口中进入该目录。执行sqlite3 person.db;就可以进入数据库了,执行.table可以查看数据库里面的表。
2.插入数据
添加插入按钮和事件响应。

Button insert = (Button) findViewById(R.id.insert);insert.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        SQLiteDatabase db = mDbHelper.getWritableDatabase();        ContentValues values = new ContentValues();        values.put("name", "malion");        values.put("info", "i am a ma nong!!!");        db.insert("tb_person", null, values);    }});

运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们输入的数据了。
3.更新数据
添加更新按钮和事件响应。

Button update = (Button) findViewById(R.id.update);update.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        SQLiteDatabase db = mDbHelper.getWritableDatabase();        ContentValues values = new ContentValues();        values.put("info", "i am a malion!!!");        db.update("tb_person", values, "name = ?",                new String[] { "malion" });    }});

运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们更新的数据了。
4.删除数据
添加删除按钮和事件响应。

Button delete = (Button) findViewById(R.id.delete);delete.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        SQLiteDatabase db = mDbHelper.getWritableDatabase();        db.delete("tb_person", "name = ?", new String[] { "malion" });    }});

运行程序,点击按钮之后,在cmd窗口执行select * from tb_person;就可以看到我们删除的数据了。
5.查找数据
添加删除按钮和事件响应。

Button select = (Button) findViewById(R.id.select);select.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        // TODO Auto-generated method stub        SQLiteDatabase db = mDbHelper.getWritableDatabase();        Cursor cursor = db.query("tb_person", null, null, null, null,                null, null);        if (cursor != null) {            while (cursor.moveToNext()) {                String name = cursor.getString(cursor                        .getColumnIndex("name"));                String info = cursor.getString(cursor                        .getColumnIndex("info"));                Log.i("info", "name: " + name + "info: " + info);            }            cursor.close();        }    }});

运行程序,点击按钮之后,查看Logcat:
这里写图片描述

6.数据库更新
先要对数据库的版本进行更新,在创建的时候最后一个参数就是数据库的版本,现在设置为2.

private void createDB() {    // TODO Auto-generated method stub    mDbHelper = new DbHelper(this, "person.db", null, 2);    mDbHelper.getWritableDatabase();}

然后在DbHelper的onUpgrade中添加数据库更新要进行的操作。

private static final String CREATE_USER_TABLE = "create table tb_user ("        + "id integer primary key autoincrement, " + "name varchar(16), "        + "info text)";@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    // TODO Auto-generated method stub    if (newVersion > oldVersion) {        switch (oldVersion) {        case 1:            db.execSQL(CREATE_USER_TABLE);        default:            break;        }    }}

运行程序,点击按钮之后,在cmd窗口执行.table;就可以看到新建的表了。

0 0
原创粉丝点击