Android-SQLite数据库实例,2024年最新【一步教学一步到位】

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

@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);

}

上面的SQL语法与其他数据库的SQL语法有所出入,相关的注意点说明见下:

①SQL语句不区分大小写,无论是create与table这类关键词,还是表格名称、字段名称,都不区分大小写。唯一区分大小写的是被单引号括起来的字符串值。

②为避免重复建表,应加上IF NOT EXISTS关键词,例如CREATE TABLE IFNOT EXISTS表格名称…

③SQLite支持整型INTEGER、长整型LONG、字符串VARCHAR、浮点数FLOAT,但不支持布尔类型。布尔类型的数据要使用整型保存,如果直接保存布尔数据,在入库时sQLite会自动将它转为0或1,其中0表示false,1表示true。

④建表时需要唯一标识字段,它的字段名为_id。创建新表都要加上该字段定义,例如_id lNTEGER PRIMARY KEY AUTOINCREMENT NOT NULL。

删除表

表格的删除动作由drop命令完成,格式为“DROP TABLE IFEXISTS表格名称;”。下面是删除用户信息表的SQL语句例子:

//删除表

public void deleteTable(SQLiteDatabase db) {

String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + TABLE_NAME;

db.execSQL(SQL_DELETE_ENTRIES);

}

打开数据库表

下面这段代码会返回一个 SQLiteDatabase 类的实例,使用这个对象,你就可以查询或者修改数据库。

//打开数据库的读连接(查询数据库)

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;

}

关闭数据库

//由于在数据库关闭时,调用getWritableDatabase()和getReadableDatabase()的成本比较高,

// 因此只要您有可能需要访问数据库,就应保持数据库连接处于打开状态。通常情况下,

// 最好在发出调用的Activity的onDestroy()中关闭数据库。

@Override

protected void onDestroy() {

userDBHelper.closeLink();

super.onDestroy();

}

添加数据

使用 SQLiteDatabase 对象的insert()。

//往该表添加多条记录

public long insert(List 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;

}

方法使用:

List list = new ArrayList<>();

list.add(new UserInfoBean(“10”, “帅次次”, 20, “09:00”));

list.add(new UserInfoBean(“12”, “朱元璋”, 30, “11:00”));

list.add(new UserInfoBean(“15”, “赵匡胤”, 40, “13:00”));

list.add(new UserInfoBean(“18”, “李世民”, 50, “15:00”));

long l = userDBHelper.insert(list);

tv_sql.setText(“插入成功:” + l);

修改数据

使用SQLiteDatabase 对象的update()方法。

//根据条件更新指定的表记录

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);

}

方法使用:

UserInfoBean bean = new UserInfoBean(“武媚娘”, 32,“12:00”);

userDBHelper.update(bean, “_id=18”);

查找数据

使用SQLiteDatabase 对象的query()方法。

//根据指定条件查询记录,并返回结果数据列表

public List query() {

List infoList = new ArrayList();

//执行记录查询动作,该语句返回结果集的游标

//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;

}

方法使用:

userDBHelper.query();

删除数据

使用SQLiteDatabase 对象的delete()方法。

//根据指定条件删除表记录

public int delete(String condition) {

//执行删除记录动作,该语句返回删除记录的数目

return mDB.delete(TABLE_NAME, condition, null);

}

方法使用:

userDBHelper.delete(“_id=12”);

未创建表或者删除表后不要对表进行操作报错

1、添加数据失败(Error)程序报错

android.database.sqlite.SQLiteException: no such table: user_info (code 1)

2、删改查数据(AndroidRuntime)程序崩溃

android.database.sqlite.SQLiteException: no such table: user_info (code 1)

各参数说明

table:表名称

总结

最后对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!

这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司20年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。

相信它会给大家带来很多收获:

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

.(img-75Hgv5Cq-1713695492045)]

[外链图片转存中…(img-VWLorOBe-1713695492045)]

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-OglyV27m-1713695492046)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 23
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android中的SQLite数据库是一种轻量级的数据库,它可以在Android应用程序中存储和检索数据。SQLite数据库使用SQL语言来管理数据,可以在Android应用程序中创建、读取、更新和删除数据。使用SQLite数据库可以使应用程序更加高效和可靠,因为它可以在本地存储数据,而不需要访问网络。在Android中使用SQLite数据库需要使用SQLiteOpenHelper类来创建和管理数据库SQLiteOpenHelper类提供了一些方法来创建和升级数据库,以及插入、查询、更新和删除数据。在使用SQLite数据库时,需要注意数据类型、表结构、SQL语句等方面的问题,以确保数据的正确性和完整性。 ### 回答2: Android平台经常使用SQLite数据库来存储和管理本地数据。在本文中,我们将讨论如何在Android中使用SQLite数据库。 首先,在Android中使用SQLite数据库,我们需要创建一个SQLiteOpenHelper类。这个类用于创建和升级数据库。它包含了两个重要的方法:onCreate()和onUpgrade()。onCreate()方法将在首次创建数据库时被调用。onUpgrade()方法将在升级数据库时被调用。我们可以在这个类中定义表名,列名,数据库版本号和其他数据库相关信息。 接下来,在我们使用数据库前,需要实例化一个SQLiteOpenHelper类对象。这个对象用于打开或创建数据库。我们可以使用getReadableDatabase()和getWritableDatabase()方法来获取一个可读/写的数据库对象。 在获取数据库对象后,我们可以执行SQL命令来操作数据库。我们可以使用execSQL()方法来执行SQL命令。我们可以使用insert()、update()和delete()方法来执行增、删、改操作。我们可以使用rawQuery()方法来执行查询操作。 SQLiteOpenHelper类和SQLiteDatabase类并不是线程安全的。因此我们需要确保在使用时进行同步操作。我们可以使用synchronized关键字来达到同步效果。 在Android中,许多第三方的开源框架,如OrmLite、GreenDao和Realm等,提供了ORM(对象关系映射)的功能,使得数据库的操作更加简单和便捷。 总的来说,在Android中使用SQLite数据库可以轻松地存储和管理本地数据。SQLiteOpenHelper和SQLiteDatabase提供了丰富的API来操作数据库。ORM框架为我们提供了更加简便的数据库操作方式。因此,掌握AndroidSQLite数据库的使用非常重要。 ### 回答3: Android SQLite数据库Android开发中最常用的数据库之一,它是一个基于文件的嵌入式关系数据库管理系统。SQLite在设计时考虑到了资源占用和运行效率,所以非常适合在移动设备上使用。下面将详细介绍如何使用Android SQLite数据库。 1. 创建数据库 首先需要创建一个SQLite数据库,通过SQLiteOpenHelper类来创建,传入的参数主要是数据库版本号和数据库名称。在SQLiteOpenHelper的子类中重写onCreate方法来创建表格和一些初始化操作。 2. 执行SQL语句 在SQLiteOpenHelper的子类中重写onUpgrade方法来执行升级操作,可以通过执行ALTER TABLE语句来修改表格结构,并通过DROP TABLE语句删除表格。除此之外,在应用中也可以通过SQLiteDataBase对象的execSQL方法来执行SQL语句,如插入、删除或修改数据等。 3. 增删改查操作 增加(insert):通过SQLiteDataBase对象的insert方法来实现,在方法中传入表名和map对象,map对象中存储数据的键值对。 删除(delete):同样通过SQLiteDataBase对象的delete方法来实现,传入表名和删除条件。 修改(update):也是通过SQLiteDataBase对象的update方法来实现,同时传入修改的数据及条件。 查询(query):同样通过SQLiteDataBase对象的query方法来实现,传入要查询的表名、查询的列、查询条件等参数即可。 4. 事务操作 SQlite数据库支持事务操作,可以在一组操作中,只要有一个操作出现问题,就可以将之前的操作全部回滚,以保证数据的完整性和一致性。 以上就是android-sqlite数据库的使用方法,当然还有很多细节需要注意,例如:表格的设计、SQL语句的优化等。熟练掌握SQLite的使用,可以帮助开发者更好地管理应用数据,提高应用性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值