SQLiteOpenHelper类
SQLiteOpenHelper是SQLiteDatabase的一个帮助类,用来管理数据库的创建和版本的更新。一般是建立一个类继承它,并实现它的onCreate和onUpgrade方法。
- SQLiteOpenHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version) 构造方法,一般是传递一个要创建的数据库名称那么参数
- onCreate(SQLiteDatabase db) 创建数据库时调用
- onUpgrade(SQLiteDatabase db,int oldVersion , int newVersion) 版本更新时调用
- getReadableDatabase() 创建或打开一个只读数据库
- getWritableDatabase() 创建或打开一个读写数据库
SQLiteDatabase类
常用方法
- (int) delete(String table,String whereClause,String[] whereArgs) 删除数据行的便捷方法
- (long) insert(String table,String nullColumnHack,ContentValues values) 添加数据行的便捷方法
- (int) update(String table, ContentValues values, String whereClause, String[] whereArgs) 更新数据行的便捷方法
- (void) execSQL(String sql) 执行一个SQL语句,可以是一个select或其他的sql语句
- (void) close() 关闭数据库
- (Cursor) query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) 查询指定的数据表返回一个带游标的数据集
- (Cursor) rawQuery(String sql, String[] selectionArgs) 运行一个预置的SQL语句,返回带游标的数据集(与上面的语句最大的区别就是防止SQL注入)
Cursor
查询数据库返回的游标, 通过游标获取数据
- getCount() 总记录条数
- isFirst() 判断是否第一条记录
- isLast() 判断是否最后一条记录
- moveToFirst() 移动到第一条记录
- moveToLast() 移动到最后一条记录
- move(int offset) 移动到指定的记录
- moveToPosition(int position) 移动到指定index
- moveToNext() 移动到下一条记录
- moveToPrevious() 移动到上一条记录
- getColumnIndex(String columnName) 获得指定列索引的int类型值, 如果不存在返回-1
需求
ContentValues 存入的键为字段名, 值 为要插入的值
数据的添加
- 使用 ContentValues 方法
1 2 3 4 |
ContentValues cv = new ContentValues();//实例化一个ContentValues用来装载待插入的数据 cv.put("username","Jack Johnson");//添加用户名 cv.put("password","iLovePopMusic"); //添加密码 db.insert("user",null,cv);//执行插入操作 |
- 使用execSQL方式来实现
1 2 |
String sql = "insert into user(username,password) values ('Jack Johnson','iLovePopMuisc');//插入操作的SQL语句 db.execSQL(sql);//执行SQL语句 |
数据的删除
1 2 3 |
String whereClause = "username=?";//删除的条件 String[] whereArgs = {"Jack Johnson"};//删除的条件参数 db.delete("user",whereClause,whereArgs);//执行删除 |
使用execSQL方式的实现
1 2 |
String sql = "delete from user where username='Jack Johnson'";//删除操作的SQL语句 db.execSQL(sql);//执行删除操作 |
数据修改
1 2 3 4 5 |
ContentValues cv = new ContentValues();//实例化ContentValues cv.put("password","iHatePopMusic");//添加要更改的字段及内容 String whereClause = "username=?";//修改条件 String[] whereArgs = {"Jack Johnson"};//修改条件的参数 db.update("user",cv,whereClause,whereArgs);//执行修改 |
使用execSQL方式的实现
1 2 |
String sql = "update [user] set password = 'iHatePopMusic' where username='Jack Johnson'";//修改的SQL语句 db.execSQL(sql);//执行修改 |
数据查询
通过query实现查询的
1 2 3 |
public Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) db.rawQuery("select * from user where username=?",new Stirng[]{"Jack Johnson"}); |
各参数说明:
- table:表名称
- colums:列名称数组
- selection:条件子句,相当于where
- selectionArgs:条件语句的参数数组
- groupBy:分组
- having:分组条件
- orderBy:排序类
- limit:分页查询的限制
- Cursor:返回值,相当于结果集ResultSet
查询的例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public int queryByNum(String phoneNumber) { Cursor c = db.query("table", null, "number=?", new String[] { number }, null, null, null); int time = 0; if (c.moveToFirst()) { do { time = c.getInt(c.getColumnIndex("time")); } while (c.moveToNext()); } c.close(); return time; } |
0 Comments