一看就会Android之SQLite数据库的使用思路
2015-10-24 15:07
429 查看
SQLite数据库适用于小型手机APP的数据存储,如果是为某个网站开发手机客户端app,那么它所公用的数据库就不是SQLite了,而是服务器端安装的MySQL或者其他比较大的数据库,此时要进行数据访问就要进行网络编程,使用Socket等知识。
在实际的开发中通常使用SQLiteOpenHelper的子类来管理数据库的链接,使用此方法如果数据库以及数据库表还不存在,系统会自动调用onCreate(SQLiteDatabase
db)方法来完成创建,此外如果创建SQLiteOpenHelper的子类的实例时传入的版本号高于之前的版本号,系统会自动调用onUpgrade()方法来更新数据库。
1.SQLiteOpenHelper的子类的作用是用来初始化数据库,即第一次使用时的建库和建表,并且允许应用程序通过该子类的实例通过调用getWritableDatabase()方法或者getReadableDatabase()方法来获取SQLiteDatabase对象db,从而就可以利用该对象db来操作数据库了(CRUD);
例如如下的数据库操作工具类:
public
classDBOpenHelper
extends SQLiteOpenHelper{
//定义数据库的名称和数据库版本号
private
static
final String
DBNAME =
"acount.db3";
private
static
final
int
VERSION = 1;
//定义创建表的sql语句
String
sql_flag =
"createtable tb_flag(_id integer primary key autoincrement,flag varchar(20))";
//构造方法
public DBOpenHelper(Contextcontext) {
super(context,
DBNAME,
null,
VERSION);
}
@Override
public
voidonCreate(SQLiteDatabase db) {
//第一次使用数据库时执行该方法,创建4张表
db.execSQL(sql_flag);
}
@Override
public
voidonUpgrade(SQLiteDatabase arg0,
int oldVersion,
intnewVersion) {
//该方法在数据库的版本发生变化时会被调用
System.out.println("数据库版本发生了改变!");
}
}
2.以上创建了数据库管理类DBOpenHelper之后,在dao层的各个类中就可以使用如下来创建数据库的SQLiteDatabase对象db了:
public
classInaccountDAO {
private DBOpenHelper
helper;//创建DBOpenHelper对象
private SQLiteDatabase
db;//创建SQLiteDatabase对象
//定义构造方法,在通过构造方法创建InaccountDAO对象的过程中,同时初始化了helper对象
public InaccountDAO(Contextcontext){
helper =
newDBOpenHelper(context);
}
//1.添加收入信息记录,参数为收入信息对象,返回值为空
public
voidadd(Tb_inaccount inaccount){
//初始化db对象
db =
helper.getReadableDatabase();
//执行添加的操作
//或者直接使用helper.getReadableDatabase().execSQL(……);这样就不用声明db对象了
db.execSQL("insertinto
tb_inaccount (_id,money,time,type,handler,mark)values(null,?,?,?,?,?)",
newObject[]{inaccount.getMoney(),inaccount.getTime(),inaccount.getType(),
inaccount.getHandler(),inaccount.getMark()
});
}
3.然后再每个activity中创建dao层对象时,传入参数Context,就可以调用各个方法了:
InaccountDAOinaccountDAO =
new InaccountDAO(AddInaccount.this);
//调用指定的方法返回list集合等类型结果
Listlist = inaccountDAO.XXX();
SQLite数据库适用于小型手机APP的数据存储,如果是为某个网站开发手机客户端app,那么它所公用的数据库就不是SQLite了,而是服务器端安装的MySQL或者其他比较大的数据库,此时要进行数据访问就要进行网络编程,使用Socket等知识。
在实际的开发中通常使用SQLiteOpenHelper的子类来管理数据库的链接,使用此方法如果数据库以及数据库表还不存在,系统会自动调用onCreate(SQLiteDatabase
db)方法来完成创建,此外如果创建SQLiteOpenHelper的子类的实例时传入的版本号高于之前的版本号,系统会自动调用onUpgrade()方法来更新数据库。
1.SQLiteOpenHelper的子类的作用是用来初始化数据库,即第一次使用时的建库和建表,并且允许应用程序通过该子类的实例通过调用getWritableDatabase()方法或者getReadableDatabase()方法来获取SQLiteDatabase对象db,从而就可以利用该对象db来操作数据库了(CRUD);
例如如下的数据库操作工具类:
public
classDBOpenHelper
extends SQLiteOpenHelper{
//定义数据库的名称和数据库版本号
private
static
final String
DBNAME =
"acount.db3";
private
static
final
int
VERSION = 1;
//定义创建表的sql语句
String
sql_flag =
"createtable tb_flag(_id integer primary key autoincrement,flag varchar(20))";
//构造方法
public DBOpenHelper(Contextcontext) {
super(context,
DBNAME,
null,
VERSION);
}
@Override
public
voidonCreate(SQLiteDatabase db) {
//第一次使用数据库时执行该方法,创建4张表
db.execSQL(sql_flag);
}
@Override
public
voidonUpgrade(SQLiteDatabase arg0,
int oldVersion,
intnewVersion) {
//该方法在数据库的版本发生变化时会被调用
System.out.println("数据库版本发生了改变!");
}
}
2.以上创建了数据库管理类DBOpenHelper之后,在dao层的各个类中就可以使用如下来创建数据库的SQLiteDatabase对象db了:
public
classInaccountDAO {
private DBOpenHelper
helper;//创建DBOpenHelper对象
private SQLiteDatabase
db;//创建SQLiteDatabase对象
//定义构造方法,在通过构造方法创建InaccountDAO对象的过程中,同时初始化了helper对象
public InaccountDAO(Contextcontext){
helper =
newDBOpenHelper(context);
}
//1.添加收入信息记录,参数为收入信息对象,返回值为空
public
voidadd(Tb_inaccount inaccount){
//初始化db对象
db =
helper.getReadableDatabase();
//执行添加的操作
//或者直接使用helper.getReadableDatabase().execSQL(……);这样就不用声明db对象了
db.execSQL("insertinto
tb_inaccount (_id,money,time,type,handler,mark)values(null,?,?,?,?,?)",
newObject[]{inaccount.getMoney(),inaccount.getTime(),inaccount.getType(),
inaccount.getHandler(),inaccount.getMark()
});
}
3.然后再每个activity中创建dao层对象时,传入参数Context,就可以调用各个方法了:
InaccountDAOinaccountDAO =
new InaccountDAO(AddInaccount.this);
//调用指定的方法返回list集合等类型结果
Listlist = inaccountDAO.XXX();
相关文章推荐
- Android知识点学习笔记——Service服务
- Android中关于日期时间与时区的使用总结
- Android使用ksoap2-android调用WebService学习
- 一看就会系列Android之ContentProvider实现数据共享及注册监听
- Android Activity与Service数据交互:Binder、bindService(系列2)
- android4.4 动态全局隐藏显示StatusBar
- Android 访问WebService的方法
- Android进阶之数据本地化集合list
- [转]android 如何修改对应时区的夏令时、冬令时?
- android ScrollView中嵌套listview listview可点击处理,可展开
- Android客户端与服务器之间的通信
- 使用javah生成.h文件, 出现无法访问android.app,Activity的错误的解决办法
- Activity组件启动过程
- 在Android下初始化Native OpenGL ES
- Android&iOS安装包更新笔记
- android图片特效
- Android开发重启adb的批处理
- Android屏幕适配全攻略(最权威的官方适配指导)
- Android应用程序线程的消息循环模型
- .gradle 文件简单介绍