SQLite 数据库功能非常强大,使用起来也非常方便,SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。下面我们分别来学习这些基本操作。

1.创建和打开数据库

在Android 中创建和打开一个数据库都可以使用openOrCreateDatabase 方法来实现,因为它会自动去检测是否存在这个数据库,如果存在则打开,不过不存在则创建一个数据库;创建成功则返回一个 SQLiteDatabase对象,否则抛出异常FileNotFoundException。下面我们来创建一个名 为”Examples_06_05.db”的数据库,并返回一个SQLiteDatabase对象 mSQLiteDatabase。

1
mSQLiteDatabase = this.openOrCreateDatabase("Example_06_05.db", MODE_PRIVATE, null);

2.创建表

一个数据库中可以包含多个表,我们的每一条数据都保存在一个指定的表中,要创建表可以通过execSQL 方法来执行一条SQL语句。execSQL能够执行大部分的SQL语句,下面我们来创建一个名为table1 且包含3个字段的表。 具体代码如下:

1
2
String CREATE_TABLE = "CREATE TABLE table1 (_id INTEGER PRIMARY KEY, num INTEGER,  data TEXT)";
mSQLiteDatabase.execSQL(CREATE_TABLE);

3.向表中添加一条数据

可以使用insert 方法来添加数据,但是 insert 方法要求把数据都打包到 ContentValues 中, ContentValues 其实就是一个Map, key值是字段名称, Value值是字段的值。通过 ContentValues 的 put 方法就可以把数据放到ContentValues中,然后插入到表中去。具体实现如下:

1
2
3
4
5
6
7
8
ContentValues  cv  =  new ContentValues();
cv.put(TABLE_NUM, 1);
cv.put(TABLE_DATA, "测试数据");
mSQLiteDatabase.insert(TABLE_NAME, null, cv);//这样同样可以使用execSQL方法来执行一条“插入”的SQL语句,代码如下:
String  INSERT_DATA = "INSERT INTO table1 (_id, num, data) values (1, 1, '通过SQL语句插入')" ;
mSQLiteDatabase.execSQL(INSERT_DATA);

4.从表中删除数据

要删除数据可以使用delete 方法,下面我们删除字段 “_id” 等于1的数据,具体代码如下:

1
2
3
4
mSQLiteDatabase.delete("Examples_06_05.db", " where_id="+0, null);
通过 execSQL方法执行SQL语句删除数据如下:
String  DELETE_DATA = "DELETE FROM table1 WHERE _id=1";
mSQLiteDatabase.execSQL(DELETE_DATA);

5.修改表中的数据

如果添加了数据后发现数据有误,这时需要修改这个数据,可以使用updata方法来更新一条数据。下面我们来修改 “num” 值为0的数据,具体代码如下:

1
2
3
4
ContentValues cv = new ContentValues();
cv.put(TABLE_NUM, 3);
cv.put(TABLE_DATA, "修改后的数据");
mSQLiteDatabase.update("table1" cv, "num " + "=" + Integer.toString(0), null);

6.关闭数据库

关闭数据库很重要,也是大家经常容易忘记的。关闭的方法很简单,直接使用SQLiteDatabase 的 close 方法。具体代码如下:

1
mSQLiteDatabase.close();

7.删除指定表

这里我们使用execSQL方法来实现,具体代码如下:

1
 mSQLiteDatabase.execSQL("DROP TABLE table1");

8.删除数据库

要删除一个数据库,直接使用deleteDatabase 方法即可,具体代码如下:

1
     this.deleteDatabase("Examples_06_05.db");

9.查询表中的某条数据

在Android中查询数据是通过Cursor类来实现的,当我们使用SQLiteDatabase.query()方法时,会得到一个Cursor对象,Cursor指向的就是每一条数据。它提供了很多有关查询的方法,具体方法如下:

方法 说明
move 以当前的位置为参考,将Cursor移动到指定的位置,成功返回true, 失败返回false

moveToPosition 将Cursor移动到指定的位置,成功返回true,失败返回false

moveToNext 将Cursor向前移动一个位置,成功返回true,失败返回false

moveToLast 将Cursor向后移动一个位置,成功返回true,失败返回 false。

movetoFirst 将Cursor移动到第一行,成功返回true,失败返回false

isBeforeFirst 返回Cursor是否指向第一项数据之前

isAfterLast 返回Cursor是否指向最后一项数据之后

isClosed 返回Cursor是否关闭

isFirst 返回Cursor是否指向第一项数据

isLast 返回Cursor是否指向最后一项数据

isNull 返回指定位置的值是否为null

getCount 返回总的数据项数

getInt 返回当前行中指定的索引数据

下面我们就是用Cursor来查询数据库中的数据,具体代码如下:

1
2
3
4
5
6
7
8
9
Cursor cur = mSQLiteDatabase.rawQuery("SELECT * FROM table", null);
if( cur != null ){if( cur.moveToFirst() ){do{int numColumn = cur.getColumnIndex("num");int num            = cur.getInt(numColumn);}while( cur.moveToNext());}}

转载于:https://www.cnblogs.com/ifonly/p/3542886.html

Android SQLite编程详解相关推荐

  1. android sqlite 类使用,Android SQLite编程详解(不使用SQLiteOpenHelper类)

    数据库功能非常强大,使用起来也非常方便,SQLite数据库的一般操作包括:创建数据库.打开数据库.创建表.向表中添加数据.从表中删除数据.修改表中的数据.关闭数据库.删除指定表.删除数据库和查询表中的 ...

  2. Android Sqlite数据库详解

    在整理ContentProvider知识点之前要先整理Sqlite数据库的知识,因为ContentProvider中要使用到数据库. 步入正题:Sqlite的起源是一艘军舰上,一个数据库程序员觉得潜艇 ...

  3. 《Android游戏开发详解》一1.1 什么是编程

    本节书摘来异步社区<Android游戏开发详解>一书中的第1章,第1.1节,译者: 李强 责编: 陈冀康,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1.1 ...

  4. android编程断网的时候回调,Android Handler的详解及实例

    Android Handler的详解 Handler我们常常用于通知主线程做相对应的操作,但是如果使用不但的话就会造成内存泄露,所以记录写正确的Handler写法. Handler handler = ...

  5. 《Android游戏开发详解》——第1章,第1.6节函数(在Java中称为“方法”更好)...

    本节书摘来自异步社区<Android游戏开发详解>一书中的第1章,第1.6节函数(在Java中称为"方法"更好),作者 [美]Jonathan S. Harbour,更 ...

  6. 《Java和Android开发实战详解》——1.2节Java基础知识

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第1章,第1.2节Java基础知识,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  7. 《Android游戏开发详解》一导读

    前 言 Android游戏开发详解 作为对编程知之甚少或者毫无所知的初学者,开始学习Android游戏开发,可能会觉得就像是穿越陌生的星际的旅程.有太多的事情要尝试,太多的知识要学习,令人遗憾的是,还 ...

  8. android 7 apk 安装程序,Android安装apk文件并适配Android 7.0详解

    Android安装apk文件并适配Android 7.0详解 首先在AndroidManifest.xml文件,activity同级节点注册provider: android:name="a ...

  9. Android中AMS工作原理,Android AMS启动详解

    启动 在Android系统启动流程中中我们提到过,AMS是在system_service中启动的, //frameworks/base/services/java/corri/android/serv ...

最新文章

  1. java.sql.Exception:setString 只能处理少于 32766 个字符的字符串
  2. python程序设计报告-20194115 实验二《Python程序设计》实验报告
  3. python tk 获取鼠标事件_在Tkin中列出鼠标悬停事件函数
  4. 利物浦大学的对于学生多样性的保护的网站!有什么unbalanced issues 直接找这里就行!
  5. [vue-cli]vue-cli怎么解决跨域的问题?
  6. 数学家告诉你什么时候结束单身?!
  7. android 空白占位符,android textview空格占位符以及一些其他占位符汇总
  8. 对象可以创建数组吗_电脑零基础可以学习创建网站吗?
  9. MS CRM 2011 如何向自定义Ribbon按钮传递参数
  10. 【Python】基于Python的行政区划编码字典
  11. android 获取录音时长_Android、iOS录音时音量大小计算
  12. python数据分析与展示 嵩天_【学习笔记】PYTHON数据分析与展示(北理工 嵩天)
  13. iis 如何重启php,Windows下配置Nginx+PHP基本操作(启动、重启和退出)
  14. 微信小程序——订阅号和服务号区别
  15. 计算机格式化后,电脑格式化后需要重装系统吗_格式化电脑重装系统的方法步骤...
  16. Swarm(bzz)节点服务器配置要求
  17. no python application found, check your startup logs for errors错误解决
  18. H5页面的功能和表现形式有哪些
  19. [日常]mov文件转换为gif
  20. 2022年iFLYTEKA.I.开发者大赛疫情微博情绪识别挑战赛

热门文章

  1. c/c++函数指针(3)
  2. 讨论:.NET 4各项技术的应用前景,徐汇区网站设计
  3. 新站如何迅速提高流量和被百度收录的技巧绝版
  4. Python字符集编码和文件读写
  5. java spark es_JavaSpark写RDD到ES时指定文档ID的
  6. [Java] 蓝桥杯BASIC-14 基础练习 时间转换
  7. 蓝桥杯 ADV-102 算法提高 单词个数统计
  8. 蓝桥杯 BASIC-14 基础练习 时间转换
  9. 旧版java_Java旧版本清理|JavaRa旧版本清理下载_V2.4 官方版_9号软件下载
  10. python是一种代表简单主义思想的语言_setuptools-36.6.0