当前位置: 代码迷 >> Android >> 写了个数据库操作类,运行期却非常麻烦,报怪异异常
  详细解决方案

写了个数据库操作类,运行期却非常麻烦,报怪异异常

热度:75   发布时间:2016-04-28 05:27:25.0
写了个数据库操作类,运行期却非常麻烦,报怪异错误!
//IncomeTable.java
public class IncomeTable {
    public int ID;
    public String tax;
    public String income;

    @Override
    public String toString() {
        return "IncomeTable [id=" + ID
                + ", tax=" + tax
                + ", income=" + income
                + "]";
    }
}

//DataBaseHelper.java
public class DataBaseHelper extends SQLiteOpenHelper {
static final String TAG = "DataBaseHelper";

private final static String INCOME_DATABASE_NAME = "incomedata.db";
    public final static int INCOME_DATABASE_VERSION = 1;

    private static DataBaseHelper mInstance;
    private static Context mContext;    
    private static SQLiteDatabase mSQLDatabase;
    
    private AtomicInteger mOpenCounter = new AtomicInteger();
/*
     * 函数介绍:获取单实例
     * 输入参数:context,上下文
     * 输出参数:无
     * 返回值  :单实例
     */
public static DataBaseHelper GetInstance(Context context) {
Log.v(TAG, "GetInstance enter");
if (null == mInstance) {
synchronized(DataBaseHelper.class) {
                if (null == mInstance) {
                 mContext = context;
                 mInstance = new DataBaseHelper(context, INCOME_DATABASE_NAME, null, 
                 INCOME_DATABASE_VERSION);
                }
            }
}
Log.v(TAG, "GetInstance exit");
return mInstance;
}

/*
     * 函数介绍:构造函数
     *          声明为私有,实现单实例
     * 输入参数:context,上下文;name,数据库包;factory,工厂;version,版本
     * 输出参数:无
     * 返回值  :无
     */
private DataBaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
Log.v(TAG, "DataBaseHelper enter");
Log.v(TAG, "DataBaseHelper exit");
}    
    
/*
     * 函数介绍:创造函数
     * 输入参数:db,数据库包
     * 输出参数:无
     * 返回值  :无
     */
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.v(TAG, "onCreate enter");
db.execSQL(IncomeDatabase.createTableSQL);
Log.v(TAG, "onCreate exit");
}

/*
     * 函数介绍:更新函数
     * 输入参数:db,数据库包;oldVersion,旧版;newVersion,新版
     * 输出参数:无
     * 返回值  :无
     */
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.v(TAG, "onUpgrade enter");
        if (newVersion != oldVersion) {
         db.execSQL(IncomeDatabase.createTableSQL);
         initIncomeDB(mContext, mSQLDatabase);
        }
Log.v(TAG, "onUpgrade exit");
}

/*
     * 函数介绍:获取数据库
     * 输入参数:无
     * 输出参数:无
     * 返回值  :SQLiteDatabase
     */
protected synchronized SQLiteDatabase getDatabase() {
Log.v(TAG, "getDatabase enter");
  相关解决方案