array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 基础篇:6.Android数据库编程---SQLite - 爱码网

简介:

  在Android平台上,继承了一个嵌入式关系型数据库---SQLite.SQLite具有跨平台特性,可以在所有主要的操作系统上运行。SQLite通过独占性和共享锁实现独立事务处理,因此多个进程可以在同一时间从同一数据库读取数据,但只有一个可以写入数据,在进行写操作之前,必须先获得独占锁。另一方面,SQLite采取动态数据类型,当某个值插入数据库时,SQLite会检查它的类型,如果该类型与所关联的列不匹配,SQLite则会进行强制转换。SQLite支持以下几种数据类型:NULL(空值)、INTEGER(整型值)、REAL(浮点值)、TEXT(字符串文本)、BLOB(二进制对象)。

SQLiteOpenHelper类:

  SQLiteOpenHelper提供了两个重要的方法:

  1.onCreate(SQLiteDatabase db)   当应用第一次创建数据库实例时候,系统会新建一个数据库,接着调用onCreate()方法,在该方法里生成数据库表结构以及进行一些数据初始化操作。

  2.onUpdate(SQLiteDatabase db ,int oldVersion,int newVersion)  当数据库版本发生变化时,该方法被调用,进行一些表结构的更新。

SQLiteDatabase类:

  对数据库的一些操作,如增删改查都可以通过该类完成:

  1.inser()---增加数据

//增加数据
    public void inser(User user){
        ContentValues values=new ContentValues();//创建ContentValues对象
        //向ContentValues对象中插入键值对,第一个参数为列名,第二个参数为该列数据值
        values.put(USERNAME, user.getUsername());
        values.put(PASSWORD, user.getPassword());
        //调用insert方法,将数据插入到数据库中
        //第一个参数:表名
        //第二个参数:如果ContentValues为空,则该列为null(SQLite不允许出现空列)
        db.insert(TABLE_NAME, null, values);
    }

  2.delete()---删除数据

//删除数据
    public void delete(){
        String whereClause="username=?";//删除条件
        String[] whereArgs={"mr"};//删除条件的参数
        db.delete(TABLE_NAME, whereClause, whereArgs);//执行删除
        //第二种删除方式
        /*
        String sql="delete from"+TABLE_NAME+"where username='mr'";//删除操作的SQL语句
        db.execSQL(sql);//执行删除
        */
    }

  3.update()---更改数据

//更改数据
    public void update(){
        String whereClause="USERNAME=?";//删除条件
        String[] whereArgs={"mr"};//删除条件的参数
        ContentValues values=new ContentValues();
        values.put("PASSWORD", "555");//添加要修改的字段
        db.update(TABLE_NAME, values, whereClause, whereArgs);
        //第二种更改方式
        /*
         * String sql="update [TABLE_NAME] set password='555'where username='mr'"//更新SQL语句
         * db.execSQL(sql);
         * */
    }

  4.query()---查询数据

//根据ID进行查询数据
    public User query(int id){
        User user=new User();
        //第一个参数:表名
        //第二个参数:要查询的列名
        //第三个参数:查询条件
        //第四个参数:查询条件的参数
        //第五个参数:对查询结果进行分组
        //第六个参数:对分组的结果进行限制
        //第七个参数:对查询结果进行排序
        Cursor cursor = db.query(TABLE_NAME, new String[] { USERNAME, PASSWORD }, "_id = " + id, null, null, null, null);
        if(cursor.getCount()>0){
            cursor.moveToFirst();//将游标移到第一条记录
            user.setUsername(cursor.getString(0));//获得用户名的值然后进行设置,"0"代表列的索引,也可用cursor.getColumnIndex("username")
            user.setPassword(cursor.getString(1));
            return user;
        }
        cursor.close();//关闭游标
        return null;
    }

  以上对数据库的操作有两种方式可以实现,一种是针对像我这样的菜鸟级别使用的通过调用SQLiteDatabase封装的方法来实现相应的操作;另一种是通过db.execSQL()直接执行SQL语句便可实现指定的操作.

  对数据库的一些操作中涉及到一个Cursor类,在android中对数据进行查询都是通过Cursor来实现。Cursor有几下几个特性:

    *Cursor是每行的集合

    *使用moveToFirst()定位至第一行

    *必须知道每一列的名称及数据类型

    *Cursor是一个随机的数据源

    *所有的数据都是通过下标取得

  下面是Cursor常用的一些方法:

    *close()---关闭游标

    *getColumnIndex(String columnName)---获取指定列索引

    *moveToFirst()---移动光标至第一行

    *moveToLast()---移动光标至最后一行

    *moveToNext()---移动光标至下一行

 

相关文章: