概述
SQLite具有轻量级、独立、易于维护等优点,支持绝大部分SQL语法,是Android编程中用于数据存储的常用方式。本文列举了增、删、改等常见操作。
实例化SQLiteDatabase
首先需要实例化一个SQLiteDatabase,然后再进行其他操作。实例化代码如下:
private SQLiteDatabase mDbDialog;
然后在主函数中令其指向特定的数据库;
mDbDialog = openOrCreateDatabase("GIMChat.db", Context.MODE_PRIVATE, null);
注意在所有操作(增删改查等)完成后要关闭数据库:
mDbExistDialog.close();
增加记录
话不多说先上代码:
mDbDialog.execSQL("CREATE TABLE IF NOT EXISTS dialog (_id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR, friendname VARCHAR, mecessage VARCHAR, ismesend SMALLINT)");
mDbDialog.execSQL("INSERT INTO dialog VALUES (NULL, ?, ?, ?, ?)",new Object[]{LoginActivity.Username, friendname, list.get(i).getBody(), 1});
注:
1.其中第一句代码的作用是:如果数据库中存在该表格,则向表格中增加一条记录,反之则先创建一个表格;
2.在插入记录时,要注意每一个字段的数据类型要与第一句中定义的数据类型一致。
删除记录
mDbChat.execSQL("DELETE FROM dialog WHERE friendname = ?", new String[]{ChatLists.get(position).getFriendname()});
其中dialog是要进行操作的表格的名称,friendname是表格中的一个字段(即删除记录的依据)。
查询记录
这里以遍历查询数据库表格中的所有记录为例(如检索聊天记录)。
首先需要实例化一个数据库指针:
private Cursor ExistDialog_cursor;
然后在主函数中使用该指针:
mDbExistDialog = openOrCreateDatabase("GIMChat.db", Context.MODE_PRIVATE, null);
mDbExistDialog.execSQL("CREATE TABLE IF NOT EXISTS dialog (_id INTEGER PRIMARY KEY AUTOINCREMENT, username VARCHAR, friendname VARCHAR, mecessage VARCHAR, ismesend SMALLINT)");
ExistDialog_cursor = mDbExistDialog.rawQuery("SELECT * FROM dialog WHERE username == ?", new String[]{LoginActivity.Username});
通过调用“.moveToNext(
)”方法,该指针可以实现对所有符合检索条件的记录的遍历。以恢复聊天记录为例,将聊天记录存储在手机本地,当用户点击聊天框时,可以通过“Friendname”及“Minename”字段的检索,实现对应聊天记录的恢复:
while (ExistDialog_cursor.moveToNext()){
dialog.setUsername(ExistDialog_cursor.getString(ExistDialog_cursor.getColumnIndex("username")));
dialog.setFriendname(ExistDialog_cursor.getString(ExistDialog_cursor.getColumnIndex("friendname")));
dialog.setMecessage(ExistDialog_cursor.getString(ExistDialog_cursor.getColumnIndex("mecessage")));
dialog.setisMeeSend(ExistDialog_cursor.getInt(ExistDialog_cursor.getColumnIndex("ismesend")));
if (dialog.getUsername().equals(LoginActivity.Username)){
if (dialog.getFriendname().equals(ChatActivity.exist_friendname) ||dialog.getFriendname().equals(ChatActivity.exist_friendname+"@47.96.151.84")){
if (dialog.getisMesend() == 0){
ExistDialogManage(false, true, dialog.getMecessage(), ChatActivity.exist_friendname);
}else {
ExistDialogManage(false, false, dialog.getMecessage(), ChatActivity.exist_friendname);
}
}
}
}
注意所有操作做完后要关闭该指针:
ExistDialog_cursor.close();
电脑查看SQLite数据库
在实际开发过程中往往需要查看数据库的内容,以进行一些Bug的排除等操作。笔者个人推荐一个个人觉得很好用的工具:SQLite Studio。该软件是一个开源软件,能在电脑端查看Android设备中的SQLite数据库。
——————————————————————————
最后贴一下我的个人公众号:微信搜索“茶迁”或扫描下图。平时会更新一些编程相关的文章,欢迎大家关注~