基础篇: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()---移动光标至下一行

原文地址:https://www.cnblogs.com/dream550/p/3905700.html