Android中SQLite数据库的使用(总结)
16lz
2021-01-24
本篇主要记录如何使用Android自带的SQLiteOpenHelper帮助类来进行SQLite数据的CRUD操作。
一、自定义MyDatabaseHelper类,继承自SQLiteOpenHelper抽象类。
/** * 数据库帮助类 */public class MyDatabaseHelper extends SQLiteOpenHelper { private Context mContext; private static MyDatabaseHelper myDatabaseHelper; private static String DATABASE_NAME = "BookStore.db"; //创建用户表的SQL语句 private String CREATE_USER = "create table Tb_User (\n" + "id integer primary key autoincrement,\n" + "name text,\n" + "sex text)"; /** * 获取MyDatabaseHelper对象 * @param context * @return */ public static MyDatabaseHelper getInstance(Context context) { if (myDatabaseHelper == null) { myDatabaseHelper = new MyDatabaseHelper(context, DATABASE_NAME, null, 1); } return myDatabaseHelper; } public MyDatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); this.mContext = context; } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { sqLiteDatabase.execSQL(CREATE_USER); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { //如果数据库需要进行升级更新(比如,增加表字段之类的),请在这里编写代码,上面的version要加1. }}
二、可以给每一个Model增加一个M_Model管理类,里面进行CRUD操作处理。
/** * 用户管理类 */public class M_User implements IUser { private SQLiteDatabase sqLiteDatabase; private MyDatabaseHelper myDatabaseHelper = MyDatabaseHelper.getInstance(MyApplication.getContext()); private String TABLE_NAME = "Tb_User"; private Tb_User tb_user; private ListuserList; /** * 获取用户列表 * @param condition * @param conditionArgs * @param onGetUserListListener */ @Override public void getUserList(final String condition, final String[] conditionArgs, final OnGetUserListListener onGetUserListListener) { new Thread(new Runnable() { @Override public void run() { userList = new ArrayList<>(); sqLiteDatabase = myDatabaseHelper.getReadableDatabase(); Cursor cursor = sqLiteDatabase.query(TABLE_NAME, new String[] {"id", "name", "sex"}, condition , conditionArgs, null, null, null); if (cursor.moveToFirst()) { do { tb_user = new Tb_User(); String name = cursor.getString(cursor.getColumnIndex("name")); String sex = cursor.getString(cursor.getColumnIndex("sex")); tb_user.setName(name); tb_user.setSex(sex); userList.add(tb_user); } while (cursor.moveToNext()); } cursor.close(); if (userList.size() != 0) { onGetUserListListener.success(userList); } else { onGetUserListListener.failed(); } } }).start(); } /** * 用户添加 * @param tb_user * @param onCallBackNullListener */ @Override public void userAdd(final Tb_User tb_user, final OnCallBackNullListener onCallBackNullListener) { new Thread(new Runnable() { @Override public void run() { sqLiteDatabase = myDatabaseHelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", tb_user.getName()); contentValues.put("sex", tb_user.getSex()); long result = sqLiteDatabase.insert(TABLE_NAME, null, contentValues); if (result > 0) { onCallBackNullListener.success(); } else { onCallBackNullListener.failed(); } } }).start(); } /** * 用户修改 * @param tb_user * @param condition * @param conditionArgs * @param onCallBackNullListener */ @Override public void userUpdate(final Tb_User tb_user, final String condition, final String[] conditionArgs, final OnCallBackNullListener onCallBackNullListener) { new Thread(new Runnable() { @Override public void run() { sqLiteDatabase = myDatabaseHelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", tb_user.getName()); contentValues.put("sex", tb_user.getSex()); int result = sqLiteDatabase.update(TABLE_NAME, contentValues, condition, conditionArgs); if (result > 0) { onCallBackNullListener.success(); } else { onCallBackNullListener.failed(); } } }).start(); } /** * 用户删除 * @param condition * @param conditionArgs * @param onCallBackNullListener */ @Override public void userDelete(final String condition, final String[] conditionArgs, final OnCallBackNullListener onCallBackNullListener) { new Thread(new Runnable() { @Override public void run() { sqLiteDatabase = myDatabaseHelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put("name", tb_user.getName()); contentValues.put("sex", tb_user.getSex()); int result = sqLiteDatabase.delete(TABLE_NAME, condition, conditionArgs); if (result > 0) { onCallBackNullListener.success(); } else { onCallBackNullListener.failed(); } } }).start(); }}
更多相关文章
- Android(安卓)ApiDemos示例解析(23):App->Intents
- 如何在一个声卡添加pa codec设备
- Android(安卓)使用ORMLite 操作数据库
- Android设置变量值之——与或非(&、|、~)
- Android(安卓)的权限设置大全
- Android(安卓)蓝牙操作--读取远程已配对的蓝牙设备
- android用户界面教程实例汇总
- Android(安卓)TabHost的使用(二)
- android 定时熄屏