首页 > 其他分享 >3.19每日总结

3.19每日总结

时间:2023-03-19 20:24:16浏览次数:42  
标签:总结 3.19 UserDBHelper mDB 每日 mHelper sql null 数据库

  今天学习了1h。

数据库操作类

新建一个类"UserDBHelper",这个类extends SQLiteOpenHelper

public class UserDBHelper extends SQLiteOpenHelper {
}
定义类内的成员变量
private static final String TAG = "UserDBHelper"; //标签名称
private static final int DB_VERSION = 1; //数据库版本
private static final String DB_NAME = "user.db"; //数据库名称
private static final String TABLE_NAME = "user_info"; //数据库表名
private static UserDBHelper mHelper = null; //数据库帮助器实例
private SQLiteDatabase mDB = null; //数据库实例
这里包含了数据库的名称、版本号、数据库表名、帮助器的实例名称、数据库的实例名称
static:指的是静态全局变量
final:指该变量一旦被赋值,便不可更改
(标签名、数据库名、版本号、数据库表名这几个定义了就不会改,这个类就是用来操作这个数据库跟里面的这个表,所以理解为常量也可以)
定义类的两个构造函数用来生成数据库帮助实例“mHelper”
1、这个只有一个参数的构造函数,参数是数据库的名称(可以理解为用于在还没有创建数据库的时候使用这个参数创建数据库并生成实例)
private UserDBHelper(Context context){
super(context,DB_NAME,null,DB_VERSION);
}
2、这个有两个参数的构造函数,参数是数据库的名称、版本号(理解为用于在已经有数据库的时候使用这个参数生成实例)

private UserDBHelper(Context context, int version) {
super(context, DB_NAME, null, version);
}
定义方法来获取一个实例
public static UserDBHelper getInstance(Context context, int version) {
if (version > 0 && mHelper == null) {
mHelper = new UserDBHelper(context, version);
} else if (mHelper == null) {
mHelper = new UserDBHelper(context);
}
return mHelper;
}
定义方法用于打开数据库的读连接操作、写连接操作(SQLite的读取和写入操作是分开的,所以要分别创建)
public SQLiteDatabase openReadLink() {
if (mDB == null || !mDB.isOpen()) {
mDB = mHelper.getReadableDatabase();
}
return mDB;
}
public SQLiteDatabase openWriteLink() {
if (mDB == null || !mDB.isOpen()) {
mDB = mHelper.getWritableDatabase();
}
return mDB;
}
定义方法关闭数据库
public void closeLink() {
if (mDB != null && mDB.isOpen()) {
mDB.close();
mDB = null;
}
}
重载SQLiteOpenHelper的方法(用于在数据库内创建表这里注意如果数据库中之前有表会删除重新建立)
@Override
public void onCreate(SQLiteDatabase db) {
Log.d(TAG, "onCreate");
//查询语句:如果存在表,则删除
String drop_sql = "DROP TABLE IF EXISTS " + TABLE_NAME + ";";
Log.d(TAG, "drop_sql:" + drop_sql);
//执行查询(删除表)
db.execSQL(drop_sql);
//查询语句:创建表(演示数据库升级时要先把下面这行注释)
String create_sql = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+ "name VARCHAR NOT NULL," + "age INTEGER NOT NULL,"
+ "height LONG NOT NULL," + "weight FLOAT NOT NULL,"
+ "married INTEGER NOT NULL," + "update_time VARCHAR NOT NULL"
+ ");";
Log.d(TAG, "create_sql:" + create_sql);
//执行查询(创建表)
db.execSQL(create_sql);
}
重载SQLiteOpenHelper的onUpgrade方法(用于修改数据库的表结构增加表内的列)
@Override
// 修改数据库,执行表结构变更语句
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.d(TAG, "onUpgrade oldVersion=" + oldVersion + ", newVersion=" + newVersion);
if (newVersion > 1) {
//Android的ALTER命令不支持一次添加多列,只能分多次添加
String alter_sql = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + "phone VARCHAR;";
Log.d(TAG, "alter_sql:" + alter_sql);
db.execSQL(alter_sql);
alter_sql = "ALTER TABLE " + TABLE_NAME + " ADD COLUMN " + "password VARCHAR;";
Log.d(TAG, "alter_sql:" + alter_sql);
db.execSQL(alter_sql);
}
}

生成实例-->打开连接(写或者读)-->组织好数据-->数据库操作-->关闭连接(关闭数据库)

标签:总结,3.19,UserDBHelper,mDB,每日,mHelper,sql,null,数据库
From: https://www.cnblogs.com/ZRGUGUGU818/p/17234119.html

相关文章

  • c++11新特性总结
    C++11新增加特性1.=default,delete=default如果我们没有定义构造函数,C++编译器会自动为我们创建一个默认构造函数。但是如果我们定义了一个构造函数,那么编译器就不会为......
  • 3.19 小记
    有一个问题是我最近做题效率超级超级差。先写一写以前做过的题吧。CF923EPerpetualSubtraction懒得打公式捏。收录到各种多项式和生成函数科技题里面了P4005小Y......
  • 2023.3.19
    importnumpyasnpimportpandasaspdinputfile="C:\\Users\\ASUS\\Documents\\WeChatFiles\\wxid_ivbyuelp335q22\\FileStorage\\File\\2023-03\\GoodsOrder.csv"dat......
  • ChatGPT背后的算法——RLHF总结
    ChatGPT背后的算法——RLHF总结参考链接:抱抱脸:ChatGPT背后的算法——RLHF|附12篇RLHF必刷论文(qq.com)背景 (文本生成的语言模型评价不在训练中)chatGPT训练4步骤......
  • SpringBoot集成Swagger错误总结
    错误展示rorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled.2023-03-1915:37:55.307ERROR12980---......
  • 分布式事务解决方案总结 - 本地消息表
    1,什么是分布式事务?在传统架构中往往是一个单体架构,一个系统就对应一个war包,然后这个系统也只有一个数据库。即一个应用对应一个数据库,此时能满足传统的数据库事务,满足ACID......
  • 模拟赛总结
    模拟赛总结2023-3-19赛时T1花了半个小时看没有推出来式子直接跳T2。一开T2先的部分分,看到一个没有环的情况。想了一下发现直接拓扑排序每次炸相同深度的点就可以了。后......
  • Stream 总结
    1前言Stream是Java8中为方便操作集合及其元素而定制的接口,它将要处理的元素集合看作一种流,对流中的元素进行过滤、排序、映射、聚合等操作。使用StreamAPI,就好像使......
  • 十大排序总结
    Introduction​ 本篇是对十大排序的总结,会涉及每个排序的重要步骤、时间复杂度、空间复杂度、稳定性、代码实现Summary排序算法最差时间复杂度空间复杂度平均时......
  • 闲话 23.3.19
    闲话不知道能写多少+能不能写完我先把要写的东西放在这(模拟赛T2不妨先考虑\(\existsB,\AB=A^{\mathsfT}\)的条件,即\(A\)的性质。设\(A\)的列向量组为......