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类操作数据库相关推荐

  1. android 继承类图,Android Studio中绘制UML类图介绍

    Android Studio中绘制UML类图介绍 Android Studio中绘制UML类图介绍 动机 最近开始阅读项目源码,从其中一个模块开始看,奈何大项目中的一个模块,对于萌新而言,也太过于复杂 ...

  2. Android Studio中有关R类地问题

    R类的问题 通常,在添加资源或者删除引用后重新保存的文件,Android Studio会准确无误地重新编译项目.不过,资源编译错误有时会一直或莫名其妙地出现.出现这种情况,可尝试如下操作: 重新检查资 ...

  3. 黄聪:使用Wordpress中的wpdb类操作数据库

    WordPress包含一个操作数据库的类--wpdb,该类基于ezSQL(由Justin Vincent维护的数据库操作项目)编写,包含了其基本的功能. 使用说明 请不要直接调用wpdb类中的方法.W ...

  4. android studio中如何设置注释模板

    在开发程序的时候,我们一般都会给文件自动添加上一些关于文件的注释信息,比如开发者的名字,开发的时间,开发者的联系方式等等.那么在android studio中该如何设置呢? 工具/原料 android ...

  5. android studio建数据库表,在android studio中创建表

    错误:android.database.sqlite.SQLiteException:表用户没有列名(代码1):编译时:INSERT INTO用户名(名称,余额,密码,年龄)VALUES(? ?,?, ...

  6. 在android studio中如何创建一个类来继承另外一个类_在Android使用Transition API检测用户活动...

    在当今世界,移动设备是我们日常生活中必不可少的一部分,我们在走路.跑步.开车以及其他许多活动时都会使用移动设备. 了解用户拿着手机的时候在做什么,可以让你的应用程序根据用户的动作进行直观的调整.对于某 ...

  7. Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录

    Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 Android Studio开发(四)SQLite数据库的DAO标准CRUD操作模拟微信通讯录 一.任务 ...

  8. android studio 导入类快捷键,关于ide:在Android Studio中自动导入所有内容的快捷方式是什么?...

    Android Studio中是否有自动导入的方法(如Eclipse shift+ctrl+od)? 我只找到CtrL+ALT+OD,要求每件事,我必须按ALT+ender才能接受. 没办法做得更快? ...

  9. android studio数据库存储数据,如何使用API​​ 23在android studio中的数据库中存储数据?...

    大多数时候我不会发布任何内容,因为我可以在其他帖子中找到我需要的所有内容,但是现在我已经有几天了,您如何在数据库中存储任何内容?这是我的Java代码如何使用API​​ 23在android studi ...

最新文章

  1. Tensorflow 可视化 TensorBoard 尝试~
  2. 无法删除xxx文档/文件夹:找不到指定的路径。请确定指定的路径是否正确
  3. 东莞与华为共建国家新型智慧城市建设示范区
  4. Hibernate中的核心接口query接口用法
  5. 工业级光纤收发器一般能正常使用多长时间?
  6. Socket.io 深入理解
  7. 论文浅尝 | 用异源监督进行关系抽取:一种表示学习方法
  8. nullnullicon 小图标
  9. python 调用mysql存储过程返回结果集
  10. How to stop looking for someone perfect and find someone to love
  11. 地理信息革命Geospatial Revolution
  12. linux fread 头文件,Linux文件操作
  13. WinForm(一) WinForm入门与基本控件使用
  14. jvm 调优 2020.09.07
  15. 信息系统开发与管理简答题、应用题和名词解释题汇总
  16. [转]短信验证码如何防止不恶意点击被刷!
  17. 科学计算机中的dms在哪,计算机视觉方向简介 | 驾驶员监控DMS
  18. 50种常见Matplotlib科研论文绘图合集!赶紧收藏~~
  19. 车羊问题c语言编程,再谈“羊车门”问题
  20. 自然语言处理(NLP)的一般处理流程!

热门文章

  1. 计算机左侧没有桌面菜单栏,AI软件左侧的工具栏不见了没有了怎么显示出来
  2. unity 环境光、模型、材质发绿,绿的发光
  3. 批量爬取网易云热歌榜音乐
  4. 生存模型的calibration需要注意的一个问题
  5. 前端性能测试(一):CPU
  6. 多发性胆囊息肉有哪些危害?
  7. python 答题卡识别_opencv+python机读卡识别整合版
  8. AppStore上线规则
  9. python dataframe根据多列排名并生成序号_将rank字段添加到pandas dataframe,按唯一组和多列排序...
  10. 红皮书 Object