Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Sqlite上的getWritableDatabase()错误_Android_Android Sqlite - Fatal编程技术网

Android Sqlite上的getWritableDatabase()错误

Android 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

我想将一些数据存储到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:551
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)