您的位置:首页 > 数据库

搭建自己的SQLiteDataBase框架(二)

2016-11-16 16:50 363 查看

搭建自己的SQLiteDataBase框架(二)

标签(空格分隔): 未分类

基本数据类型的增删改查(CRUD)

删除:

private void delete(String tableName, String where, String[] args) {
db.delete(tableName, where, args);
}

public void delete(String id) {
try {
delete(mTableName, mIdName + "=?", new String[]{id});
//delete related association data
for (Field field : mForeignds) {
delete(DBUtils.getAssociationTableName(clz, field.getName()), "pk1=?", new String[]{id});
}
} catch (Exception e) {
System.out.println(e.toString());
}
}

public <T> void delete(T t) {
try {
String id = (String) id_field_.get(t);
delete(id);
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.toString());
}
}


2. 增改


public <T> void newOrUpdate(T t) {
ContentValues contentValues = new ContentValues();
try {
String idValue = (String) id_field_.get(t);
for (Field field : fields) {
if (field.isAnnotationPresent(Column.class)) {
field.setAccessible(true);
Class<?> clz = field.getType();
if (clz == String.class) {
System.out.println("key:" + DBUtils.getColumnName(field) + ",value:" + field.get(t).toString());
contentValues.put(DBUtils.getColumnName(field), field.get(t).toString());
} else if (clz == int.class || clz == Integer.class) {
contentValues.put(DBUtils.getColumnName(field), field.getInt(t));
} else {
//TODO
}
}
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("newOrUpdate:" + e.toString());
}
newOrUpdate(mTableName, contentValues);
}

private void newOrUpdate(String tableName, ContentValues contentValues) {
System.out.println(tableName + ",size:" + contentValues.size());
db.replace(tableName, null, contentValues);
}


3. 查询


public T queryById(String id) {
Cursor cursor = rawQuery(mTableName, mIdName + "=?", new String[]{id});
T t = null;
if (cursor.moveToNext()) {
try {
t = clz.newInstance();
for (Field field : fields) {
if (field.isAnnotationPresent(Column.class)) {
field.setAccessible(true);
Class<?> clazz = field.getType();
if (clazz == int.class || clazz == Integer.class) {
field.setInt(t, cursor.getInt(cursor.getColumnIndex(DBUtils.getColumnName(field))));
} else if (clazz == String.class) {
field.set(t, cursor.getString(cursor.getColumnIndex(DBUtils.getColumnName(field))));
} else {
//TODO
}

}
}

} catch (Exception e) {
e.printStackTrace();
System.out.println("queryById:" + e.toString());
}
}
return t;
}


以上就是基本的增删改查实现,看一下测试结果

public void add() {
Developer developer = new Developer();
developer.setId("00001");
developer.setName("Stay");
developer.setAge(17);
DBManager.getInstance().getDao(Developer.class).newOrUpdate(developer);
}

public void queryCompanyById() {
Developer developer = DBManager.getInstance().getDao(Developer.class).queryById("00001");
if (developer != null) {
System.out.println(developer.toString());
}
}

11-16 16:46:05.843 17260-17260/? I/System.out: id:00001,name:Stay,age:17


以上就是普通的增删该查了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: