数据库类
各个类的介绍
- MyDbOpenHelper类:用于创建数据库和数据表
package com.example.myapplication.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import com.example.myapplication.AppApplication;
/**
* Created by 董梦娇 on 2015/10/10.
*/
public class MyDbOpenHelper extends SQLiteOpenHelper {
/**
*
* @param context
* @param name :传入的是数据表名称
* @param factory
* @param version
*/
public MyDbOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
/**
* 为方便调用,这里重新写一个构造方法
*/
public MyDbOpenHelper(){
this(AppApplication.getApplication(),"SALES.DB",null,1);
}
/**
* 在此方法中创建表
* @param db
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table "+TableConfig.TABLE_WORK_DAILY+" if not exists ("+TableConfig.WorkDaily.COLUMN_ID+" integer primary key autoincrement,"+TableConfig.WorkDaily.COLUMN_USE_ID+" integer,"+TableConfig.WorkDaily.COLUMN_TYPE+" integer,"+TableConfig.WorkDaily.COLUMN_CONTENT+" text,"+TableConfig.WorkDaily.COLUMN_TIME+" integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
- DbManager类:此类中可以创建数据库实例,只是为了方便创建数据库。当然也可以没有,直接利用MyDbOpenHelper类
package com.example.myapplication.db;
import android.database.sqlite.SQLiteDatabase;
/**
* 此类中可以创建数据库实例,获得对数据库的操作,和MyDbOpenHelper相联系
*/
public class DbManager {
private MyDbOpenHelper helper;
private SQLiteDatabase db;
private DbManager(){
helper = new MyDbOpenHelper();
db = helper.getWritableDatabase();
}
private static DbManager manager;
public synchronized static DbManager newInstance(){
if (manager==null){
manager=new DbManager();
}
return manager;
}
public SQLiteDatabase getDb() {
return db;
}
}
- TableOperate类:这是一个操作数据库表的类,进行增删改查操作都在这个类中。
这里如果要使用xUtils包中的框架,就需要导入xUtils包。
package com.example.myapplication.db;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* Created by 董梦娇 on 2015/10/10.
*/
public class TableOperate {
/**
* 用于查询表中所有数据,可以用自己写的也可以用xUtils提供的框架。
* @param tableName:传入的是数据库中的表名
* @param entityType :传入实体类
* @param <T>
* @return
*/
public <T> List<T> getList(String tableName,Class<T> entityType ){
SQLiteDatabase db = DbManager.newInstance().getDb();
Cursor cursor = db.rawQuery("select * from "+tableName,null);
cursor.moveToFirst();
ArrayList<T> list = new ArrayList<>();
while(!cursor.isAfterLast()){
try {
T t = entityType.newInstance();
for(int i = 0;i<cursor.getColumnCount();i++)
{
String content = cursor.getString(i);
String columnname = cursor.getColumnName(i);
Field field = entityType.getDeclaredField(columnname);
field.setAccessible(true);
field.set(t, content);
field.setAccessible(false);
}
cursor.moveToNext();
list.add(t);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
return list;
/**
* 也可以直接使用xUtils中的dbUtils框架
*/
}
}
- WorkDaily类:此类是将数据表写了一个类来方便后面用。类中的属性就是表的每个列属性。
package com.example.myapplication.dao;
/**
* 这个类是存储数据库中的work_daily表中的字段
*/
public class WorkDaily {
private String id;
private String use_id;
private String type;
private String content;
private String time;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUse_id() {
return use_id;
}
public void setUse_id(String use_id) {
this.use_id = use_id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
- TableConfig类:这个类是个配置类,用于存放表名,表中各种属性,这是为了方便在用表名或者属性时方便并且规范。
package com.example.myapplication.db;
/**
* Created by 董梦娇 on 2015/10/10.
*/
public class TableConfig {
public static final String TABLE_WORK_DAILY = "work_daily";
static class WorkDaily{
public static final String COLUMN_ID = "id";
public static final String COLUMN_USE_ID = "use_id";
public static final String COLUMN_TYPE = "type";
public static final String COLUMN_CONTENT = "content";
public static final String COLUMN_TIME = "time";
}
}
使用数据库: