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