Android Sqlite上的getWritableDatabase()错误
我想将一些数据存储到sqlite数据库中,但在我的DBHandler和DBGen类中发生错误,我找不到此错误,我想存储用户名、密码、确认密码、手机号码和电子邮件id UserDetailsDTO.java DBGen.java DBHandler.java UserDBHandler.java 星触觉 以下是LogCat特定的问题代码 12-31 12:09:17.749:E/AndroidRuntime962:java.lang.NullPointerException 12-31 12:09:17.749:E/AndroidRuntime962:at-android.database.sqlite.SQLiteOpenHelper.getWritableDatabaseSQLiteOpenHelper.java:157 12-31 12:09:17.749:E/AndroidRuntime962:com.technowellservices.mobileuapp.database.DBGen.openDBGen.java:63 12-31 12:09:17.749:E/AndroidRuntime962:com.technowellservices.mobileuapp.database.DBHandler.getwritedbbhandler.java:59 12-31 12:09:17.749:E/AndroidRuntime962:com.technowellservices.mobileuapp.database.UserDaoImpl.UserDaoImpl.java:20 12-31 12:09:17.749:E/AndroidRuntime962:com.technowellservices.mobileuapp.Activities.StartActivity$1.onClickStartActivity.java:70 12-31 12:09:17.749:E/AndroidRuntime962:at-android.view.view.performClickView.java:3480 12-31 12:09:17.749:E/AndroidRuntime962:at-android.view.view$PerformClick.runView.java:13983 12-31 12:09:17.749:E/AndroidRuntime962:at-android.os.Handler.handleCallbackHandler.java:605 12-31 12:09:17.749:E/AndroidRuntime962:at android.os.Handler.dispatchMessageHandler.java:92 12-31 12:09:17.749:E/AndroidRuntime962:at android.os.Looper.Looper.java:137 12-31 12:09:17.749:E/AndroidRuntime962:at-android.app.ActivityThread.mainActivityThread.java:4340 12-31 12:09:17.749:E/AndroidRuntime962:at java.lang.reflect.Method.invokenactive方法 12-31 12:09:17.749:E/AndroidRuntime962:at java.lang.reflect.Method.invokeMethod.java:511 12-31 12:09:17.749:E/AndroidRuntime962:com.android.internal.os.ZygoteInit$methodAndArgscaler.runZygoteInit.java:784 12-31 12:09:17.749:E/AndroidRuntime962:com.android.internal.os.ZygoteInit.mainZygoteInit.java:551Android Sqlite上的getWritableDatabase()错误,android,android-sqlite,Android,Android Sqlite,我想将一些数据存储到sqlite数据库中,但在我的DBHandler和DBGen类中发生错误,我找不到此错误,我想存储用户名、密码、确认密码、手机号码和电子邮件id UserDetailsDTO.java DBGen.java DBHandler.java UserDBHandler.java 星触觉 以下是LogCat特定的问题代码 12-31 12:09:17.749:E/AndroidRuntime962:java.lang.NullPointerException 12-31 12:09
12-31 12:09:17.749:E/AndroidRuntime962:at dalvik.system.NativeStart.mainNative方法最可能的错误原因是无效的上下文,在代码中,将此行放在类声明下面:
UserDaoImpl userDaoImpl;
然后在onCreate init中,它如下所示:
userDaoImpl = new UserDaoImpl (this)
您的上下文为空,请检查它。
public abstract class DBHandler {
private int version;
private String database;
private String logTag;
private DBGen dbGen;
@SuppressWarnings("unused")
private DBHandler(){}
public DBHandler(Context context, String database, int version, String logTag){
this.database=database;
this.version=version;
this.logTag=logTag;
dbGen = DBGen.getInstance(context, this);
}
public String getDatabase() {
return database;
}
public void setDatabase(String database) {
this.database = database;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
public String getLogTag() {
return logTag;
}
public void setLogTag(String logTag) {
this.logTag = logTag;
}
public SQLiteDatabase getReadDB(){
return dbGen.open();
}
public SQLiteDatabase getWriteDB(){
return dbGen.open();
}
public void close(){
try{
dbGen.close();
}
catch(SQLException sqlEx){
Log.e(logTag, "Exception while closing connection",sqlEx);
}
}
public abstract void onCreate(SQLiteDatabase db);
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion);
}
public class UserDBHandler extends DBHandler {
// DataBase Name
public final static String DATABASE = "UserDetails";
// DataBase Table Name's
public final static String USER_TABLE = "TABLE_USER";
// Field names of MALLS Table
public static final String USER_NAME = "username";
public static final String PASSWORD = "password";
public static final String CONFIRM_PASSWORD = "confirmpassword";
public static final String USER_MOBILE_NUMBER = "mobilenumber";
public static final String USER_EMAIL = "email";
private String CREATE_TABLE_USER = "CREATE TABLE IF NOT EXISTS "
+ USER_TABLE+ " (" + USER_NAME
+ " VARCHAR," + PASSWORD + " VARCHAR,"
+ CONFIRM_PASSWORD + " VARCHAR," + USER_MOBILE_NUMBER + "
VARCHAR,"
+ USER_EMAIL+ " VARCHAR,"
+ ")";
public UserDBHandler(Context context) {
super(context,DATABASE, Constants.DB_VERSION, Constants.TAG);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_USER);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
try {
onCreate(db);
} catch (Exception e) {
e.printStackTrace();
}
}
}
UserDaoImlp.java
public class UserDaoImpl implements UserDao{
private SQLiteDatabase myDB;
private UserDBHandler dbHandler;
private String TAG = "ItopperDaoImpl";
public UserDaoImpl(Context context){
dbHandler = new UserDBHandler(context);
myDB = dbHandler.getWriteDB();
}
@Override
public void beginTransaction() {
// TODO Auto-generated method stub
myDB.beginTransaction();
}
@Override
public void setTransactionSuccessful() {
// TODO Auto-generated method stub
myDB.setTransactionSuccessful();
}
@Override
public void endTransaction() {
// TODO Auto-generated method stub
myDB.endTransaction();
}
public long insertUserDetails(UserDetailsDTO userDetails) {
ContentValues contentValues = new ContentValues();
contentValues.put(UserDBHandler.USER_NAME, userDetails.getUserName());
contentValues.put(UserDBHandler.PASSWORD, userDetails.getPasssword());
contentValues.put(UserDBHandler.CONFIRM_PASSWORD,
userDetails.getConfirmPassword());
contentValues.put(UserDBHandler.USER_MOBILE_NUMBER,userDetails.getMobileNumber());
contentValues.put(UserDBHandler.USER_EMAIL,userDetails.getEmailId());
return myDB.insert(UserDBHandler.USER_TABLE, null,
contentValues);
}
}
public class StartActivity extends Activity {
private EditText
userNameEdit,passwordEdit,confirmPasswordEdit,emailEdit,mobileNoEdit;
private Button sbtButton;
private Button cancelButton;
private String userName;
private String password;
private String confirmPwd;
private String mobileNo;
private String email;
private UserDaoImpl userDaoImpl;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
userNameEdit = (EditText)findViewById(R.id.userNameedt);
passwordEdit = (EditText)findViewById(R.id.paswordEdit);
confirmPasswordEdit = (EditText)findViewById(R.id.confirmPaswordEdit);
emailEdit = (EditText)findViewById(R.id.emailedt);
mobileNoEdit = (EditText)findViewById(R.id.mobileNoedt);
sbtButton = (Button)findViewById(R.id.submitbtn);
cancelButton = (Button)findViewById(R.id.cancel);
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
sbtButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
UserDetailsDTO userDetailsDto = new UserDetailsDTO();
userName = userNameEdit.getText().toString().trim();
password = passwordEdit.getText().toString().trim();
confirmPwd = confirmPasswordEdit.getText().toString().trim();
email = emailEdit.getText().toString().trim();
mobileNo = mobileNoEdit.getText().toString().trim();
userDetailsDto.setUserName(userName);
userDetailsDto.setPassword(password);
userDetailsDto.setConfirmPassword(confirmPwd);
userDetailsDto.setMobileNumber(mobileNo);
userDetailsDto.setEmailId(email);
userDaoImpl = new UserDaoImpl(mContext);
userDaoImpl.insertUserDetails(userDetailsDto);
}
});
}
}
UserDaoImpl userDaoImpl;
userDaoImpl = new UserDaoImpl (this)