package com.scc.sqlite;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
/**
* 创建人:gongtc
* 创建时间:2021/6/21
* 功能描述:数据库帮助器SQLiteOpenHelper
*/
public class UserDBHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "user.db";//数据库的名称
private static UserDBHelper mHelper = null;//数据库帮助器的实例
private SQLiteDatabase mDB = null;//数据库的实例
public static final String TABLE_NAME = "user_info";
public static final String _ID = "_id";
public static final String COLUMN_NAME = "name";
public static final String COLUMN_AGE = "age";
public static final String COLUMN_UPDATE_TIME = "update_time";
/**
* @param context 上下文环境(例如,一个 Activity)
* DB_NAME 数据库名字
* factory null 一个可选的游标工厂(通常是 Null)
* @param version 数据库模型版本的整数
* 会调用父类 SQLiteOpenHelper的构造函数
*/
public UserDBHelper(Context context, int version) {
super(context, DB_NAME, null, version);
}
//利用单例模式获取SQLiteOpenHelper的唯一实例
public static UserDBHelper getInstance(Context context, int version) {
if (version > 0 && mHelper == null) {
mHelper = new UserDBHelper(context, version);
}
return mHelper;
}
//打开数据库的读连接(查询数据库)
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;
}
//创建数据库,执行建表语句
@Override
public void onCreate(SQLiteDatabase db) {
Log.e(getClass().getName(), "onCreate");
//创建表语句
String SQL_CREATE_ENTRIES = "CREATE TABLE IF NOT EXISTS "
+ TABLE_NAME + "("
+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
+ COLUMN_NAME+" VARCHAR NOT NULL,"
+ COLUMN_AGE+" INTEGER NOT NULL,"
+ COLUMN_UPDATE_TIME+" VARCHAR NOT NULL" + "); ";
//执行完整的sQL语句
db.execSQL(SQL_CREATE_ENTRIES);
}
/**
* 当数据库需要修改的时候(两个数据库版本不同),Android系统会主动的调用这个方法。
* 一般我们在这个方法里边删除数据库表,并建立新的数据库表.
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//这个数据库只是在线数据的缓存,所以它的升级策略是
//简单地丢弃数据并重新开始
Log.e(getClass().getName(), "onUpgrade");
//删除表语句
String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
@Override
public void onOpen(SQLiteDatabase db) {
//每次成功打开数据库后首先被执行
super.onOpen(db);
}
//根据指定条件删除表记录
public int delete(String condition) {
Log.e(getClass().getName(), "delete:" + condition);
//执行删除记录动作,该语句返回删除记录的数目
return mDB.delete(TABLE_NAME, condition, null);
}
//删除表
public void deleteTable(SQLiteDatabase db) {
String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;
db.execSQL(SQL_DELETE_ENTRIES);
}
//往该表添加多条记录
public long insert(List<UserInfoBean> infoList) {
long result = -1;
for (int i = 0; i < infoList.size(); i++) {
UserInfoBean info = infoList.get(i);
//不存在唯一性重复的记录,则插入新记录
ContentValues cv = new ContentValues();
cv.put(_ID, info.get_id());
cv.put(COLUMN_NAME, info.getName());
cv.put(COLUMN_AGE, info.getAge());
cv.put(COLUMN_UPDATE_TIME, info.getUpdate_time());
//执行插入记录动作,该语句返回插入记录的行号
result = mDB.insert(TABLE_NAME, "", cv);
if (result == -1) {//添加成功则返回行号,添加失败则返回-1
return result;
}
}
return result;
}
//根据条件更新指定的表记录
public int update(UserInfoBean info, String condition) {
ContentValues cv = new ContentValues();
cv.put(COLUMN_NAME, info.getName());
cv.put(COLUMN_AGE, info.getAge());
cv.put(COLUMN_UPDATE_TIME, info.getUpdate_time());
//执行更新记录动作,该语句返回更新的记录数量
return mDB.update(TABLE_NAME, cv, condition, null);
}
//根据指定条件查询记录,并返回结果数据列表
public List<UserInfoBean> rawQuery(String condition) {
String sql = String.format
("select _id, name, age, update_time from %s where %s; ",
TABLE_NAME, condition);
List<UserInfoBean> infoList = new ArrayList<UserInfoBean>();
//执行记录查询动作,该语句返回结果集的游标
Cursor cursor = mDB.rawQuery(sql,null);//循环取出游标指向的每条记录
while (cursor.moveToNext()) {
UserInfoBean info = new UserInfoBean();
info._id = cursor.getString(0);//取出字符串
info.name = cursor.getString(1);//取出字符串
info.age = cursor.getInt(2);//取出整型数
info.update_time = cursor.getString(3);//取出字符串
infoList.add(info);
}
cursor.close();
// 查询完毕,关闭数据库游标
return infoList;
}
//根据指定条件查询记录,并返回结果数据列表
public List<UserInfoBean> query() {
List<UserInfoBean> infoList = new ArrayList<UserInfoBean>();
//执行记录查询动作,该语句返回结果集的游标
//SELECT语句内容作为 query()方法的参数,比如:要查询的表名,要获取的字段名,WHERE条件,
//包含可选的位置参数,去替代WHERE条件中位置参数的值,GROUP BY条件,HAVING条件。
//除了表名,其他参数可以是null
Cursor cursor = mDB.query(TABLE_NAME, null, null, null, null, null, null);
//循环取出游标指向的每条记录
while (cursor.moveToNext()) {
UserInfoBean info = new UserInfoBean();
info._id = cursor.getString(0);//取出字符串
info.name = cursor.getString(1);//取出字符串
info.age = cursor.getInt(2);//取出整型数
info.update_time = cursor.getString(3);//取出字符串
infoList.add(info);
}
cursor.close();
// 查询完毕,关闭数据库游标
return infoList;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
SQLite用户信息的增删改查
共100个文件
xml:69个
png:10个
java:6个
需积分: 0 27 下载量 19 浏览量
2021-06-22
15:36:16
上传
评论
收藏 186KB ZIP 举报
温馨提示
Android的数据库存储方式—SQLite的使用方法,包括:SQLite用到了哪些SQL语法,如何使用数据库管理器操纵SQLite,如何使用数据库帮助器简化数据库操作等,以及如何利用SQLite改进登录页面的记住密码功能。 适用人群:初学者
资源推荐
资源详情
资源评论
收起资源包目录
SQLite用户信息的增删改查 (100个子文件)
gradlew.bat 2KB
.gitignore 240B
.gitignore 50B
.gitignore 6B
build.gradle 992B
build.gradle 637B
settings.gradle 49B
gradlew 5KB
SQLiteDemo.app.iml 9KB
SQLiteDemo.iml 1KB
gradle-wrapper.jar 53KB
UserDBHelper.java 8KB
MainActivity.java 5KB
UserInfoBean.java 2KB
UserInfoContract.java 1KB
ExampleInstrumentedTest.java 763B
ExampleUnitTest.java 391B
ic_launcher_round.png 16KB
ic_launcher_round.png 12KB
ic_launcher.png 10KB
ic_launcher.png 8KB
ic_launcher_round.png 7KB
ic_launcher_round.png 5KB
ic_launcher.png 5KB
ic_launcher.png 4KB
ic_launcher_round.png 3KB
ic_launcher.png 3KB
proguard-rules.pro 770B
gradle.properties 1019B
local.properties 428B
gradle-wrapper.properties 244B
workspace.xml 12KB
ic_launcher_background.xml 6KB
activity_main.xml 2KB
ic_launcher_foreground.xml 2KB
jarRepositories.xml 1KB
Gradle__androidx_test_espresso_espresso_idling_resource_3_3_0_aar.xml 1KB
AndroidManifest.xml 1KB
Gradle__androidx_coordinatorlayout_coordinatorlayout_1_1_0_aar.xml 1KB
Gradle__androidx_test_espresso_espresso_core_3_3_0_aar.xml 1KB
Gradle__androidx_recyclerview_recyclerview_1_1_0_aar.xml 1023B
Gradle__androidx_drawerlayout_drawerlayout_1_0_0_aar.xml 1023B
Gradle__com_google_android_material_material_1_3_0_aar.xml 1007B
Gradle__androidx_transition_transition_1_2_0_aar.xml 1005B
Gradle__androidx_viewpager2_viewpager2_1_0_0_aar.xml 1005B
Gradle__androidx_appcompat_appcompat_1_2_0_aar.xml 996B
Gradle__androidx_fragment_fragment_1_1_0_aar.xml 987B
Gradle__androidx_test_monitor_1_3_0_aar.xml 976B
Gradle__androidx_test_ext_junit_1_1_2_aar.xml 972B
Gradle__androidx_test_runner_1_3_0_aar.xml 968B
Gradle__androidx_print_print_1_0_0_aar.xml 960B
Gradle__androidx_test_core_1_3_0_aar.xml 952B
Gradle__androidx_core_core_1_3_1_aar.xml 951B
Gradle__androidx_localbroadcastmanager_localbroadcastmanager_1_0_0_aar.xml 907B
Gradle__androidx_vectordrawable_vectordrawable_animated_1_1_0_aar.xml 906B
Gradle__androidx_legacy_legacy_support_core_utils_1_0_0_aar.xml 902B
Gradle__androidx_annotation_annotation_experimental_1_0_0_aar.xml 898B
Gradle__androidx_lifecycle_lifecycle_livedata_core_2_0_0_aar.xml 896B
Gradle__androidx_versionedparcelable_versionedparcelable_1_1_0_aar.xml 892B
Gradle__androidx_appcompat_appcompat_resources_1_2_0_aar.xml 872B
Gradle__androidx_lifecycle_lifecycle_viewmodel_2_1_0_aar.xml 872B
Gradle__androidx_dynamicanimation_dynamicanimation_1_0_0_aar.xml 868B
Gradle__androidx_lifecycle_lifecycle_livedata_2_0_0_aar.xml 866B
themes.xml 863B
Gradle__androidx_lifecycle_lifecycle_runtime_2_1_0_aar.xml 860B
themes.xml 856B
Gradle__androidx_vectordrawable_vectordrawable_1_1_0_aar.xml 852B
Gradle__androidx_cursoradapter_cursoradapter_1_0_0_aar.xml 844B
Gradle__androidx_documentfile_documentfile_1_0_0_aar.xml 836B
Gradle__androidx_interpolator_interpolator_1_0_0_aar.xml 836B
Gradle__androidx_arch_core_core_runtime_2_0_0_aar.xml 830B
Gradle__androidx_savedstate_savedstate_1_0_0_aar.xml 820B
Gradle__androidx_customview_customview_1_0_0_aar.xml 820B
Gradle__androidx_viewpager_viewpager_1_0_0_aar.xml 812B
Gradle__androidx_activity_activity_1_0_0_aar.xml 804B
Gradle__androidx_cardview_cardview_1_0_0_aar.xml 804B
Gradle__org_hamcrest_hamcrest_integration_1_3.xml 789B
Gradle__androidx_loader_loader_1_0_0_aar.xml 788B
gradle.xml 767B
Gradle__androidx_annotation_annotation_1_1_0.xml 761B
Gradle__org_hamcrest_hamcrest_library_1_3.xml 760B
Gradle__org_hamcrest_hamcrest_core_1_3.xml 740B
Gradle__com_squareup_javawriter_2_1_1.xml 733B
Gradle__javax_inject_javax_inject_1.xml 719B
Gradle__junit_junit_4_13_2.xml 677B
Gradle__junit_junit_4_12.xml 663B
Gradle__androidx_constraintlayout_constraintlayout_2_0_1_aar.xml 652B
Gradle__androidx_lifecycle_lifecycle_common_2_1_0.xml 590B
Gradle__androidx_arch_core_core_common_2_1_0.xml 565B
Gradle__androidx_collection_collection_1_1_0.xml 563B
misc.xml 533B
modules.xml 443B
Gradle__androidx_constraintlayout_constraintlayout_solver_2_0_1.xml 416B
colors.xml 387B
Gradle__com_google_code_findbugs_jsr305_2_0_1.xml 363B
runConfigurations.xml 346B
ic_launcher.xml 276B
ic_launcher_round.xml 276B
compiler.xml 174B
strings.xml 74B
共 100 条
- 1
资源评论
帅次
- 粉丝: 2947
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功