首页 > 代码库 > 基础篇:6.Android数据库编程---SQLite

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