Android Studio中通过SQLiteDatabase类操作数据库
SQLite是一款轻型的数据库,主要用在嵌入式系统,它占用的资源非常低。SQLite不依赖第三方软件,也不需要安装。数据库中的信息都包含在一个文件中,这个文件可以自由地复制到其它目录或其它机器上。
在Android Studio中,SQLiteDatabase类表示数据库类。通过该类可以实现对数据库中数据的添加、删除、查询和修改等功能。
1 打开/创建数据库文件
通过SQLiteDatabase类的静态方法openDatabase()打开数据库文件,使用静态方法openOrCreateDatabase()方法打开或创建数据库文件。
1.1 openDatabase()方法
该方法的格式为
public static SQLiteDatabase openDatabase(String path, SQLiteDatabase.CursorFactory factory,int flags);
其中,参数path表示要打开或者创建的数据库文件路径;factory表示一个可选的factory类,当开始查询时,可以通过该类来实例化cursor,默认将该参数设置为null;flags指定了访问数据库的模式,可以将该参数指定为OPEN_READWRITE、OPEN_READONLY和CREATE_IF_NECESSARY,这三个标志分别表示读写方式打开数据库、只读方式打开数据库以及如果数据库文件不存在,则创建数据库文件。该方法的返回值是打开或者创建的数据库文件。
SQLiteDatabase DB = SQLiteDatabase.openDatabase(getFilesDir()+"/info.db", null, SQLiteDatabase.CREATE_IF_NECESSARY);
以上代码的功能是在系统文件的目录下创建了打开一个名为”info.db”的数据库文件,如果该数据库文件不存在,则创建该文件。
1.2 openOrCreateDatabase()方法
该方法的格式为
public static SQLiteDatabase openOrCreateDatabase(File file, SQLiteDatabase.CursorFactory factory);
或者
public static SQLiteDatabase openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory);
该方法相当于openDatabase()方法将第三个参数设置为CREATE_IF_NECESSARY。
SQLiteDatabase DB = SQLiteDatabase.openOrCreateDatabase(getFilesDir() + "/info.db", null);
2 操作数据库文件
操作数据库文件,实际上就是对数据库文件中的表和记录进行操作。
2.1 创建表
通过SQL语句在数据库文件中创建表,首先要构建SQL语句,之后通过SQLiteDatabase类执行该语句。
2.1.1 构建SQL语句
使用以下代码构建创建表的SQL语句。
String createSql = "create table user(_id integer primary key autoincrement, username, password)";
以上SQL语句的含义是,创建一个名为“user”的表,该表中的主键类型是整形,且是自动增长的;该表包含“username”域和“password”域。
2.1.2 执行SQL语句
通过SQLiteDatabase类的execSQL()方法来执行SQL语句。该方法的格式为
public void execSQL(String sql)throws SQLException
其中,参数sql表示要执行的SQL语句。
DB.execSQL(createSql);
以上代码执行了创建表的SQL语句,DB是在“1 打开/创建数据库文件”中创建的数据库类的对象。
2.2 创建记录
创建记录的方法与创建表的方法类似,首先构建SQL语句,之后执行该语句。
String insertSql = "insert into user(username, password) values(?,?)";
DB.execSQL(insertSql, new String[]{"yang", "123"});
以上代码的功能是在“user”表中插入了一个记录,该记录的username域的值是“yang”,“password”域的值是“123”。
2.3 删除记录
String deleteSql = "delete from user where username=?";
DB.execSQL(deleteSql, new String[]{"yang"});
以上代码的作用是在user表中删除用户名为“yang”的记录。
2.4 修改记录
String updateSql = "update user set username=?,password=? where _id=?";
DB.execSQL(updateSql, new String[]{"yang", "456", "0"});
以上代码的作用是将user表中ID为0的记录的”username”域的值设置为“yang”,“password”域得值设置为“456”。
2.5 查询记录
与以上操作记录使用的方法不同,查询记录时使用的是SQLiteDatabase类的rawQuery()方法。该方法的格式为
public Cursor rawQuery(String sql,String[] selectionArgs)
其中,参数sql指定了查询记录的SQL语句;selectionArgs指定了sql中包含的?所代表的值,如果sql中不包含?,则该参数可以设置为null。rawQuery()方法的返回值是查询到的结果,其类型为Cursor。
String selectSql = "select _id, username, password from user";
Cursor cursor = DB.rawQuery(selectSql, null);
以上代码的作用是查询表user中的所有记录,并将记录保存在cursor中。
2.6 关闭数据库
调用SQLiteDatabase类的close()方法关闭打开的数据库。
DB.close();
Android Studio中通过SQLiteDatabase类操作数据库相关推荐
- android 继承类图,Android Studio中绘制UML类图介绍
Android Studio中绘制UML类图介绍 Android Studio中绘制UML类图介绍 动机 最近开始阅读项目源码,从其中一个模块开始看,奈何大项目中的一个模块,对于萌新而言,也太过于复杂 ...
- Android Studio中有关R类地问题
R类的问题 通常,在添加资源或者删除引用后重新保存的文件,Android Studio会准确无误地重新编译项目.不过,资源编译错误有时会一直或莫名其妙地出现.出现这种情况,可尝试如下操作: 重新检查资 ...
- 黄聪:使用Wordpress中的wpdb类操作数据库
WordPress包含一个操作数据库的类--wpdb,该类基于ezSQL(由Justin Vincent维护的数据库操作项目)编写,包含了其基本的功能. 使用说明 请不要直接调用wpdb类中的方法.W ...
- android studio中如何设置注释模板
在开发程序的时候,我们一般都会给文件自动添加上一些关于文件的注释信息,比如开发者的名字,开发的时间,开发者的联系方式等等.那么在android studio中该如何设置呢? 工具/原料 android ...
- android studio建数据库表,在android studio中创建表
错误:android.database.sqlite.SQLiteException:表用户没有列名(代码1):编译时:INSERT INTO用户名(名称,余额,密码,年龄)VALUES(? ?,?, ...
- 在android studio中如何创建一个类来继承另外一个类_在Android使用Transition API检测用户活动...
在当今世界,移动设备是我们日常生活中必不可少的一部分,我们在走路.跑步.开车以及其他许多活动时都会使用移动设备. 了解用户拿着手机的时候在做什么,可以让你的应用程序根据用户的动作进行直观的调整.对于某 ...
- Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录
Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 一.任务 ...
- android studio 导入类快捷键,关于ide:在Android Studio中自动导入所有内容的快捷方式是什么?...
Android Studio中是否有自动导入的方法(如Eclipse shift+ctrl+od)? 我只找到CtrL+ALT+OD,要求每件事,我必须按ALT+ender才能接受. 没办法做得更快? ...
- android studio数据库存储数据,如何使用API 23在android studio中的数据库中存储数据?...
大多数时候我不会发布任何内容,因为我可以在其他帖子中找到我需要的所有内容,但是现在我已经有几天了,您如何在数据库中存储任何内容?这是我的Java代码如何使用API 23在android studi ...
最新文章
- Tensorflow 可视化 TensorBoard 尝试~
- 无法删除xxx文档/文件夹:找不到指定的路径。请确定指定的路径是否正确
- 东莞与华为共建国家新型智慧城市建设示范区
- Hibernate中的核心接口query接口用法
- 工业级光纤收发器一般能正常使用多长时间?
- Socket.io 深入理解
- 论文浅尝 | 用异源监督进行关系抽取:一种表示学习方法
- nullnullicon 小图标
- python 调用mysql存储过程返回结果集
- How to stop looking for someone perfect and find someone to love
- 地理信息革命Geospatial Revolution
- linux fread 头文件,Linux文件操作
- WinForm(一) WinForm入门与基本控件使用
- jvm 调优 2020.09.07
- 信息系统开发与管理简答题、应用题和名词解释题汇总
- [转]短信验证码如何防止不恶意点击被刷!
- 科学计算机中的dms在哪,计算机视觉方向简介 | 驾驶员监控DMS
- 50种常见Matplotlib科研论文绘图合集!赶紧收藏~~
- 车羊问题c语言编程,再谈“羊车门”问题
- 自然语言处理(NLP)的一般处理流程!