Android中数据库的使用(学习笔记)

-----------2016年10月14日22:10:07


Android中数据库的使用:


1.创建一个类,继承SQLiteOpenHelper,实现该类的构造方法
public XXX(Context context, String name, CursorFactory factory, int version)

-->该构造方法可以只设置一个参数Context context,其余参数可在surper中确定
public XXX(Context context, String name, CursorFactory factory, int version){
surper(context,name,factory,version);
}
-->改进之后
public XXXX(Context context){
surper(context,"xxx.db",null,1);
}
-->构造方法中参数的含义
context---上下文
name---数据库名称
factory---游标对象,默认为空
version---版本,从1开始的递增整数

2.创建好了类之后,重写onCreate()和onUpgrade()方法

-->onCreate()方法,在数据库第一次创建时调用,该方法主要用于表结构的创建。
所以,所有建表的sql语句,都在改方法中执行.
db.execSQL("sql");

-->onUpgrade()方法,数据库版本号改变/修改表结构(增/删一个字段)调用

3.实例化XXX类,调用静态方法getReadableDatabase/getWritableDatabase,得到SQLiteDatabase对象

XXX xx = new XXX(context);
SQLiteDatabase db = xx.getReadableDatabase();

☆☆☆操作完db及时关闭数据库,减少内存消耗
db.close();

4.进行增删改查操作

-->增加

long result = db.insert(String table, String nullColumnHack, ContentValues values);

table:表名
nullColumnHack:默认为null,为null时表示插入一个空行
values:添加那条数据的值,底层由HashMap实现,values.put(key,value)实现数据的添加

result:返回添加成功后那一行的ID,-1添加失败

-->删除
int result = db.delete(String table, String whereClause, String[] whereArgs);

whereArgs:判断条件,如"name=?"
whereClause:判断条件的占位符,String[]类型 new String[]{"小王"}

result:删除的行数

-->更新
类似删除,多一个value

update(String table, ContentValues values, String whereClause, String[] whereArgs)
value:存放要更新的信息

-->查询(Cursor游标对象)
Cursor cursor = db.rawQuery(sql语句,查询条件)
返回cursor结果集

cursor.getCount()获取结果集的行数

cursor.moveToNext()判断是否有下一行内容,有返回true,无返回false;

☆☆☆cursor使用完后需要关闭,cursor.close();

5.优化
避免每次操作数据库,都实例化一个XXX类,创建数据库的过程放在dao的构造函数中,
☆☆☆☆其中,获取SQLiteDatabase对象的方法不能放在构造函数中。因为,在构造函数中
只获取了一个SQLiteDatabase对象,而每次对数据进行不同的操作后都关闭了数据库,在以
后的操作中,就无法获得SQLiteDatabase对象,从而导致对数据操作失败!





















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值