Android SQLiteDatabase使用详细教程

2018-09-08 16:04:25
  • Android提供了创建和是用SQLite数据库的API。SQLiteDatabase代表一个数据库对象,提供了操作数据库的一些方法。在Android的SDK目录下有sqlite3工具,我们可以利用它创建数据库、创建表和执行一些SQL语句。下面是SQLiteDatabase的常用方法。

    SQLiteDatabase的常用方法 
    方法名称 方法表示含义 
    openOrCreateDatabase(String path,SQLiteDatabase.CursorFactory factory) 打开或创建数据库 
    insert(String table,String nullColumnHack,ContentValues values) 插入一条记录 
    delete(String table,String whereClause,String[] whereArgs) 删除一条记录 
    query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy) 查询一条记录 
    update(String table,ContentValues values,String whereClause,String[] whereArgs) 修改记录 
    execSQL(String sql) 执行一条SQL语句 
    close() 关闭数据库 
    1、打开或者创建数据库

    在Android 中使用SQLiteDatabase的静态方法openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory)打开或者创建一个数据库。它会自动去检测是否存在这个数据库,如果存在则打开,不存在则创建一个数据库;创建成功则返回一个SQLiteDatabase对象,否则抛出异常FileNotFoundException。

    下面是创建名为“stu.db”数据库的代码: 
    openOrCreateDatabase(String path,SQLiteDatabae.CursorFactory factory) 
    参数1 数据库创建的路径

    参数2 一般设置为null就可以了

    db=SQLiteDatabase.openOrCreateDatabase(“/data/data/com.lingdududu.db/databases/stu.db”,null); 
    2、创建表

    创建一张表的步骤很简单:

    编写创建表的SQL语句 
    调用SQLiteDatabase的execSQL()方法来执行SQL语句

    下面的代码创建了一张用户表,属性列为:id(主键并且自动增加)、sname(学生姓名)、snumber(学号)

    private void createTable(SQLiteDatabase db){ 
    //创建表SQL语句 
    String stu_table=”create table usertable(_id integer primary key autoincrement,sname text,snumber text)”; 
    //执行SQL语句 
    db.execSQL(stu_table); 

    3、插入数据 
    插入数据有两种方法: 
    ①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法, 
    参数1 表名称, 
    参数2 空列的默认值 
    参数3 ContentValues类型的一个封装了列名称和列值的Map; 
    ②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行 
    第一种方法的代码:

    private void insert(SQLiteDatabase db){ 
    //实例化常量值 
    ContentValues cValue = new ContentValues(); 
    //添加用户名 
    cValue.put(“sname”,”xiaoming”); 
    //添加密码 
    cValue.put(“snumber”,”01005”); 
    //调用insert()方法插入数据 
    db.insert(“stu_table”,null,cValue); 

    第二种方法的代码:

    private void insert(SQLiteDatabase db){ 
    //插入数据SQL语句 
    String stu_sql=”insert into stu_table(sname,snumber) values(‘xiaoming’,’01005’)”; 
    //执行SQL语句 
    db.execSQL(sql); 

    4、删除数据

    删除数据也有两种方法:

    ①调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法 
    参数1 表名称 
    参数2 删除条件 
    参数3 删除条件值数组

    ②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。

    第一种方法的代码:

    private void delete(SQLiteDatabase db) { 
    //删除条件 
    String whereClause = “id=?”; 
    //删除条件参数 
    String[] whereArgs = {String.valueOf(2)}; 
    //执行删除 
    db.delete(“stu_table”,whereClause,whereArgs); 

    第二种方法的代码:

    private void delete(SQLiteDatabase db) { 
    //删除SQL语句 
    String sql = “delete from stu_table where _id = 6”; 
    //执行SQL语句 
    db.execSQL(sql); 

    5、修改数据

    修改数据有两种方法:

    ①调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法 
    参数1 表名称 
    参数2 跟行列ContentValues类型的键值对Key-Value 
    参数3 更新条件(where字句) 
    参数4 更新条件数组

    ②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。

    第一种方法的代码:

    private void update(SQLiteDatabase db) { 
    //实例化内容值 ContentValues values = new ContentValues(); 
    //在values中添加内容 
    values.put(“snumber”,”101003”); 
    //修改条件 
    String whereClause = “id=?”; 
    //修改添加参数 
    String[] whereArgs={String.valuesOf(1)}; 
    //修改 
    db.update(“usertable”,values,whereClause,whereArgs); 

    第二种方法的代码:

    private void update(SQLiteDatabase db){ 
    //修改SQL语句 
    String sql = “update stu_table set snumber = 654321 where id = 1”; 
    //执行SQL 
    db.execSQL(sql); 

    6、查询数据

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

    public Cursor query(String table,String[] columns,String selection,String[] selectionArgs,String groupBy,String having,String orderBy,String limit);

    各个参数的意义说明:

    参数table:表名称

    参数columns:列名称数组

    参数selection:条件字句,相当于where

    参数selectionArgs:条件字句,参数数组

    参数groupBy:分组列

    参数having:分组条件

    参数orderBy:排序列

    参数limit:分页查询限制

    参数Cursor:返回值,相当于结果集ResultSet

    Cursor是一个游标接口,提供了遍历查询结果的方法,如移动指针方法move(),获得列值方法getString()等.

    Cursor游标常用方法

    方法名称 方法描述 
    getCount() 获得总的数据项数 
    isFirst() 判断是否第一条记录 
    isLast() 判断是否最后一条记录 
    moveToFirst() 移动到第一条记录 
    moveToLast() 移动到最后一条记录 
    move(int offset) 移动到指定记录 
    moveToNext() 移动到下一条记录 
    moveToPrevious() 移动到上一条记录 
    getColumnIndexOrThrow(String columnName) 根据列名称获得列索引 
    getInt(int columnIndex) 获得指定列索引的int类型值 
    getString(int columnIndex) 获得指定列缩影的String类型值

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

    private void query(SQLiteDatabase db) { 
    //查询获得游标 
    Cursor cursor = db.query (“usertable”,null,null,null,null,null,null);

    //判断游标是否为空 
    if(cursor.moveToFirst() { 
    //遍历游标 
    for(int i=0;i

  • 以上是Android SQLiteDatabase使用详细教程的内容,更多 SQLiteDatabase Android 使用 教程 详细 的内容,请您使用右上方搜索功能获取相关信息。
  • 2020-04-17 11:19:55

    Vue中的is和操作DOM

    vue中is的属性引入是为了解决dom结构中对放入html的元素有限制的问题,譬如ul里面要接上li的标签,引入is的属性后,你完全可以写成这样

  • 2020-04-17 11:27:48

    TweenMax中文初级教程一

    TweenMax.js集成了GreenSock动画平台的大部分核心功能,且具有极高的兼容性。

  • 2020-04-17 11:28:35

    TweenMax中文初级教程二

    TimelineMax是GreenSock 动画平台中的动画组织、排序、管理工具,可创建时间轴(timeline)作为动画或其他时间轴的容器,这使得整个动画控制和精确管理时间变得简单,避免了通过反复delay和回调进行动画。 作者:李霖弢 链接:https://www.jianshu.com/p/8c0361e43bf5 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 2020-04-17 11:28:57

    TweenMax中文初级教程三

    动画关键词:CSS(一般可以省略) CSSPlugin用于在TweenMax中对DOM元素的CSS相关属性进行动画 在CSSPlugin中CSS属性需要写成驼峰式,例如font-size应当写作fontSize。有时候你可以在一些默认px为单位的属性中省略单位,CSSPlugin还可以在不同的单位间做动画:

  • 2020-04-17 11:29:23

    TweenMax中文初级教程四

    用于滚动窗口(类似于window.scrollTo(x, y))或DOM元素(如myDiv.scrollTop = y; myDiv.scrollLeft = x;)。滚动窗口时使用window作为动画目标。

  • 2020-04-17 14:06:29

    图片解释EaseIn,EaseOut,EaseInOut

    1.EaseIn:即缓动发生在入口处,也就是刚开始的时候。 2.EaseOut:即缓动发生在出口处,也就是结束之前。 3.EaseInOut:就是两边都有缓动了.

  • 2020-04-21 14:47:13

    Redis危险命令重命名、禁用

    flushdb,清空数据库 flushall,清空所有记录,数据库 config,客户端连接后可配置服务器 keys,客户端连接后可查看所有存在的键

  • 2020-04-21 15:13:15

    redis 简单使用

    Redis和Memcached类似,也属于k-v数据存储 Redis官网 https://redis.io支持更多value类型,除了和string外,还支持hash、lists(链表)、sets(集合)和sorted sets(有序集合) Redis是可以把数据存储在磁盘上的并且使用了两种文件格式:全量数据(RDB)和增量请求(aof)。一般叫做redis持久化 全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载。