• andriod studio连接SQLite


    SQLite

    SQLite是一种嵌入式的数据库引擎,以文件的形式保存数据的,专门适用于资源有限的设备上进行适量的数据存储。

    从本质上来看,SQLite的操作方式只是一种更为便捷的文件操作,当应用程序创建或打开一个SQLite数据库时,其实只是打开一个文件准备读写。

    虽然SQLite内部只支持null(空)、integer(整型)、real(浮点数)、text(文本)和blob(二进制)这五种数据类型,但是varchar(n)、char(n)、decimal(p, s)、date等类型数据可以转换为上面五种数据类型中相应的类型进行储存。例如可以将图片转换为二进制进行储存。

    注意:定义为integer primary key的字段只能存储64位整数,否则SQLite会产生错误。

    SQLiteOpenHelper

    SQLiteOpenHelper提供构造器,用于传递当前上下文对象以及SQLite数据库版本信息,在SQLiteOpenHelper的继承类的构造函数中会调用它,构造器如下:

    SQLiteOpenHelper(Context context, String name,
                     SQLiteDatabase.CursorFactory factory, int version)

    上面的构造函数中,都是用于创建一个SQLite数据库,context为一个当前应用的上下文对象;name是数据库名称;factory是一个允许子类在查询时使用的游标,一般不用(传null即可);version是数据库版本号。

    在SQLiteOpenHelper中,可以进行SQLite数据库的创建、维护、日志以及获取可读写的数据库对象,通过下面几个常用方法得到支持:
      1)String getDatabaseName():获取数据库名。
      2)SQLiteDatabase getReadableDatabase():创建或者打开一个可读的数据库对象。
      3)SQLiteDatabase getWritableDatabase():创建或者打开一个可读/写的数据库对象。
      4)abstract void onCreate(SQLiteDatabase db):当第一次调用SQLiteOpenHelper的时候执行,之后再次调用将不再执行,一般用于完成数据库初始化的工作。
      5)void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本号发生向上更新时被执行。
      6)void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion):当数据库版本号发生向下更新时被执行。

    SQLiteDatabase

    当使用SQLiteOpenHelper的getReadableDatabase()或者getWritableDatabase()方法获取到SQLiteDatabase对象,就可以对这个数据库进行操作了。

    CRUD

    其中C代表添加(Create),R代表查询(Retrieve),U代表更新(Update),D代表删除(Delete)。

    1、使用SQL语句执行CRUD操作

    void execSQL():通过SQL语句执行一条非查询语句。(增删改)
    Cursor rawQuery():通过SQL语句执行一条查询语句。(查)

    2、使用SQLiteDatabase所提供的方法实现CRUD操作

    1)插入一条数据

    long insert(String table, String nullColumnHack, ContentValues values)
    

    table是表名;nullColumnHack用于在未指定添加数据的情况下给某些可为空的列自动赋值null,一般用不到这个功能,直接传入null即可;values是一个 ContentValues对象,它提供了一系列的put()方法重载,用于向ContentValues中添加数据,只需要将表中的每个列名以及相应的待添加数据传入即可。
      2)根据条件,删除数据。

    int delete(String table, String whereCaluse, String[] whereArgs)
    

    table是表名;whereCaluse和whereArgs用于去约束删除某一行或某几行的数据,不指定的话默认就是删除所有行。  
      3)根据条件,更新数据。

    int updata(String table,ContentValues values,String whereCaluse,String[] whereArgs)
    

    table是表名;values是ContentValues对象要把更新数据在这里组装进去;whereCaluse和whereArgs用于去约束更新某一行或某几行中的数据,不指定的话默认就是更新所有行。
      4)根据条件,查询数据。

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

    table是表名;columns用于指定去查询哪几列,如果不指定则默认查询所有列;selection和selectionArgs用于去约束查询某一行或某几行的数据,不指定则默认是查询所有行的数据;groupBy用于指定需要去group by的列,不指定则表示不对查询结果进行group by操作;having用于对group by之后的数据进行进一步的过滤,不指定则表示不进行过滤;orderBy用于指定查询结果的排序方式,不指定则表示使用默认的排序方式。



    作者:李俊的博客
    链接:https://www.jianshu.com/p/8955b0e73186
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    轮廓 | outline (Basic User Interface)
    转换 | CSS Transitions (Animations & Transitions)
    越线 | line-break (Text)
    贴士和技巧 | CSS Animations: Tips (Animations & Transitions)
    负 | @counter-style.negative (Counter Styles)
    调整 | resize (Basic User Interface)
    再见乱码:5分钟读懂MySQL字符集设置
    git
    Python 内存&函数调用关系图
    Python 笔记
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/10863024.html
Copyright © 2020-2023  润新知