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();