Android SQLite操作类--封装
在Android操作数据库一般都是先继承SQLiteOpenHelper类,下面直接贴上代码:
public class DBHelper extends SQLiteOpenHelper {
/**
* @Fields name : 数据库名称
*/
private final static
String name = "info.db";
/**
* @Fields version :版本号
*/
private final static
int version = 1;
private Class<?>[] clazzs =
new Class<?>[] { DemoBean.class };//关联数据库的实体类
public DBHelper(Context context, String name, CursorFactory factory,
int
version) {
super(context,
name, factory, version);
}
public DBHelper(Context context) {
super(context, name, null,
version);
}
/*
* 用来创建数据库中的表
<p>Title: onCreate</p> <p>Description: </p>
* @param db
* @see
*
android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite
* .SQLiteDatabase)
*/
@Override
public void
onCreate(SQLiteDatabase db) {
for (int i = 0; i < clazzs.length; i++) {
DBUtils.createTable(db, clazzs[i]);
}
}
/*
* 当数据库的版本变更之后就会调用这个方法
<p>Title: onUpgrade</p> <p>Description: </p>
*
* @param db
*
* @param
oldVersion
*
*
@param newVersion
*
* @see
*
android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite
* .SQLiteDatabase, int, int)
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
}
}
此类中需要注意的是 DBUtils.createTable(db, clazzs[i]);这个静态的方法,该方法主要用来自动生成SQL语句(因为本人最不喜欢写SQL语句了,使用的是Java反射技术)。这里要用到 Java Annotation,不知道的可以百度一下)。
另外呢,数据库的操作无非就是增删改查—>为了不对每个表都写个增删改查的方法,这里全部使用泛型方法,但是要注意的是:JavaBeen中的类名和字段名都要和数据库中表的字段结构一样。还有一点要注意的是:没有尽量的使用接口,我认为没有必要。
由于代码过长:我只贴插入方法了:
public <T> void insertData(T t) throws NumberFormatException,
IllegalArgumentException, IllegalAccessException {
SQLiteDatabase db = null;
synchronized
(DriverManager.class) {
db =
helper.getWritableDatabase();
}
Field[] fields =
t.getClass().getDeclaredFields();// 使用暴力
ContentValues values = new
ContentValues();
for (Field
field : fields) {
//
允许访问私有变量
field.setAccessible(true);
if
("double".equals(field.getType().toString())) {
values.put(field.getName(),
Double.valueOf(String.valueOf(field.get(field))));
}
if
("int".equals(field.getType().toString())) {
values.put(field.getName(),
Integer.valueOf(String.valueOf(field.get(field))));
}
if
("float".equals(field.getType().toString())) {
values.put(field.getName(),
Float.valueOf(String.valueOf(field.get(field))));
}
if
("class java.lang.String".equals(field.getType().toString())) {
values.put(field.getName(), String.valueOf(field.get(field)));
}
}
db.insert(t.getClass().getSimpleName(), null, values);
db.close();
}
好了暂时就写这么多了,等我下次组织语言在写 ,第一次写嘛!!
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。