1.定义MySQLiteOpenHelper继承SQLiteOpenHelper
public class MySQLiteOpenHelper extends SQLiteOpenHelper
2.定义构造方法 ,其中DB_NAME是新建sqlite数据库名
public MySQLiteOpenHelper(Context context) {
super(context, DB_NAME, null, 1);
}
3.实现两个方法,其中onCreate是首次创建数据库的时候执行,onUpgrade是数据库有变动的时候执行
@Override
public void onCreate(SQLiteDatabase db) {
createTableSql = "create table TXH_APPLICATION(APPLICATION_ID integer, SNAME text,BDEL text)";
db.execSQL(createTableSql);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
4.实现增、删、改、查、方法
4.1单条数据添加
public <T> long insert(Class<T> clszz,Object object){
try {
String tableName = clszz.getSimpleName().substring(1,clszz.getSimpleName().length());
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
Method method = clszz.getMethod("getPK");
// 调用方法并获取返回值
Object returnValue = method.invoke(object);
Field[] fields=clszz.getDeclaredFields();
for (Field field : fields) {
String name = field.getName();
if(returnValue.equals(name)|| "CREATOR".equals(name))
{
continue;
}
Object value = field.get(object);
if(value!=null){
values.put(name,value.toString());
}else{
values.put(name,"");
}
}
long row = db.insert(tableName,null,values);
db.close();
return row;
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InvocationTargetException e) {
throw new RuntimeException(e);
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
4.2批量增加
public int inserts(List<String> sqls){
int i;
SQLiteDatabase db = getWritableDatabase();
db.beginTransaction();
try {
for (String sql : sqls) {
db.execSQL(sql);
}
// 设置事务标志为成功,当结束事务时就会提交事务
db.setTransactionSuccessful();
i=1;
} catch (Exception e) {
i=0;
e.printStackTrace();
} finally {
// 结束事务
db.endTransaction();
db.close();
}
return i;
}
4.3删除
public <T> int delOeder(Class<T> clszz,String sWhere){
String tableName = clszz.getSimpleName().substring(1,clszz.getSimpleName().length());
SQLiteDatabase db = getWritableDatabase();
int row = db.delete(tableName,sWhere,null);
db.close();
return row;
}
4.4修改
public <T> long update(Class<T> clszz,String sWhere){
String tableName = clszz.getSimpleName().substring(1,clszz.getSimpleName().length());
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
Field[] fields=clszz.getDeclaredFields();
for (Field field : fields) {
try {
String name = field.getName();
Object value = field.get(clszz);
values.put(name,value.toString());
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
//PUR_ORDER_ID = 1
int row =db.update(tableName,values,sWhere,null);
db.close();
return row;
}
4.5查询(根据sql语句查询最后转换成对应的List)
public <T> List<T> getList(String sql, Class<T> o){
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.rawQuery(sql, null);
List<T> list = new ArrayList<T>();
if(cursor !=null&&cursor.getCount()>0) {
while (cursor.moveToNext()){
try {
T et = o.newInstance();
queryDataToBean(cursor,et);
list.add(et);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
}
}
}
cursor.close();
db.close();
return list;
}
5.MainActivity 调用
引入MySQLiteOpenHelper
MySQLiteOpenHelper db ;
new MySQLiteOpenHelper(this);传入Context
db = new MySQLiteOpenHelper(this);
调用
mList = db.getList(sql,MTORDER_INSite.class);