我无法弄清楚是什么锁定了我的数据库。这个应用程序在生产中是全新的,我什至无法执行第一个操作,即向数据库添加用户。我有一个 DatabaseHandler 可以完成所有数据库操作。我的 Activity 正在调用该处理程序中的方法。该方法打开和关闭数据库。目前,唯一面向数据库的其他操作是创建数据库。
数据库处理程序.java
public class DatabaseHandler extends SQLiteOpenHelper{
......
public DatabaseHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
Log.w(DATABASE, "Creating database at " + directoryPath + "/"
+ DATABASE_NAME);
db.execSQL(USER_TABLE_CREATE);
db.execSQL(PRODUCTS_TABLE_CREATE);
db.execSQL(INVOICE_TABLE_CREATE);
db.execSQL(INVOICE_PROD_TABLE_CREATE);
db.execSQL(CUSTOMER_TABLE_CREATE);
db.execSQL(BILLING_TABLE_CREATE);
db.execSQL(COMPANY_TABLE_CREATE);
db.execSQL(LOGO_TABLE_CREATE);
db.execSQL(TERMS_TABLE_CREATE);
db.execSQL(TEMPLATE_TABLE_CREATE);
db.execSQL(PREFS_TABLE_CREATE);
db.execSQL(CURRENCY_TABLE_CREATE);
Log.d(DATABASE, "onCreate Created ALL Tables");
}
......
// WRITE VALUES TO DATABASE
public void putUserData(String fUSERNAME, String fPASSWORD, String fEMAIL, String fFIRSTNAME, String fLASTNAME) {
Log.d("DATABASE", "Received the following values to insert into the USER Table: " + fUSERNAME + ", " + fPASSWORD + ", " + fEMAIL + ", " + fFIRSTNAME + ", " + fLASTNAME);
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(KEY_USERNAME, fUSERNAME);
cv.put(KEY_PASSWORD, fPASSWORD);
cv.put(KEY_EMAIL, fEMAIL);
cv.put(KEY_FIRSTNAME, fFIRSTNAME);
cv.put(KEY_LASTNAME, fLASTNAME);
db.insert(USER_TABLE, null, cv);
Log.d(DATABASE, "New User data written to Database " + fUSERNAME);
db.close();
}
}
我已插入 Log.d 以查看挂断的位置。它调用 getWritableDatabase 的那一刻,应用程序崩溃。
ActivityUserAccountCreate.java
public class ActivityCreateUserAccount extends Activity {
static Context mContext;
public ActivityCreateUserAccount(Context _mContext) {
mContext = _mContext;
}
//Empty Constructor
public ActivityCreateUserAccount(){
}
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_account);
...
DatabaseHandler db = new DatabaseHandler(mContext);
db.putUserData(fUSERNAME, fPASSWORD, fEMAIL, fFIRSTNAME, fLASTNAME);
..........
}
我已经删除了无聊的无关代码。我已经包括了上下文和类。我想知道上下文是否是问题所在?否则我在我的其他数据库应用程序中使用这个确切的代码并且没有问题。我想不出这里有什么不同。