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

好了暂时就写这么多了,等我下次组织语言在写 ,第一次写嘛!!

更多相关文章

  1. Android处理Bitmap的一些方法
  2. Android setMovementMethod() 方法
  3. android SQLite数据库2
  4. Android切换主线程更新UI方法总结
  5. android Log.isLoggable方法的使用
  6. Android 创建SQLite数据库(一)
  7. Android 软件盘弹出时把顶部局顶上去的解决方法

随机推荐

  1. 网络时间同步
  2. android 算定义布局xml
  3. Android默认时区、语言设置
  4. 【翻译】(1)何为Android?(2012-06-30废弃)
  5. Android实现圆形头像-使用自定义控件
  6. Android组件学习笔记(连接互联网)
  7. 启动android默认浏览器
  8. android中取消ActionBar的两种方式
  9. android仿今日头条个人中心页面
  10. ContentProvider 翻译