sqlite 数据库驱动框架

面向对象数据库框架设计 sql

public void saveUser(User user){
	DBHelper dbHelper=new DBHelper(this);
	SQLiteDatabase db=dbHelper.getWritableDatabase();
	db.execSQL("create table if not exists db_user(name,varchar(20),password varchar(10),)");
	ContentValues values=new ContentValues();
	values.put("name",user.getName());
	values.put("password",user.getPassword());
	db.beginTransaction();
	int scheduleID=-1;
	try{
	db.insert("schedule",null,values);
	db.setTransactionSuccessful();
	}finally{
	}
	db.endTransaction();
	db.close();
}

 

1.调用层不关心数据的建立和在哪里建立
2.关心表的建立
3.不关心sql语句的拼写,对象丢给你,你帮我存入数据库数据库

hashMap<String,String>=getValues(User)
ContentValues values=getContentValues();框架

目录结构this

db--|
db--|---annotion(注解目录)
db--|-------|
db--|-----DbTable
 设计

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface DbTable(){
	String value();
}

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface DbField{
	String value();
}

public interface IBaseDao<T>{
	Long insert(T entity);
	Long update(T entity,T where);
	delete();	
	select();
}
public abstract class BaseDao<T> implements IBaseDao{
	private SQLiteDatabase database;
	protected boolean init(Class<T> entity,SQLiteDatabase sqLiteDatabase){
		database=sqLiteDatabase;
	}
	public Long insert(T entity){
		return null;
	}
	public Long update(T entity,T where){
		return null;
	}
}
public class BaseDaoFactory{
	private String sqliteDatabasePath;
	private SQLiteDatabase sqlLiteDatabase;
	public BaseDaoFactory(){
		sqliteDatabasePath=Enviroment.getDataDirectory().getAbsolutePath()+"user.db";
		openDatabase();
	}	
	public void openDatabase(){
		this.sqLiteDatabase=SQLiteDatabase.openOrCreateDatabase(sqliteDatabasePath,null);
	}
	public synchronized<T extends BaseDao<M>,M> T getDataHelper(Class<T> class,Class <M> entityClass );
	BaseDao baseDao=null;
	try{
		baseDao=Class.newInstance();
		baseDao.init();
	}catch(){
	
	}
}

@DbTable("tb_common_user")
public class User{
	@DbField("tb_name")
	public String name;

	@DbField("tb_password")
	public String password;
}