【发布时间】:2016-01-04 09:08:07
【问题描述】:
当我尝试从 Sqlite 检索用户名和密码时,我发现了以下异常
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:223)
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:163)
at com.example.nawin.demo.database.DatabaseOpenHelper.getUserPass(DatabaseOpenHelper.java:115)
at com.example.nawin.demo.login_fragment$2.onClick(login_fragment.java:68)
at android.view.View.performClick(View.java:5076)
at android.view.View$PerformClick.run(View.java:20279)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5910)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
//这是我的检索方法
public void getUserPass(String user, String pass)throws SQLException{
db=this.getWritableDatabase();
String query="select * from register where username= '"+user+"' and password= '"+pass+"'";
cursor=db.rawQuery(query,null);
}
//这是我调用上述方法的地方
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String strUser = txUserName.getText().toString();
String strPass = txPassword.getText().toString();
boolean loginStatus = false;
String NAME = "";
if (view.getId() == R.id.btnLogin) {
helper.getUserPass(strUser,strPass);
helper.cursor.moveToFirst();
do {
if(strUser.equals(helper.cursor.getString(0))&& (strPass.equals(helper.cursor.getString(1)))){
loginStatus=true;
NAME=helper.cursor.getString(0);
}
}while (helper.cursor.moveToNext());
if(loginStatus==true){
Toast.makeText(getActivity(),"Login Successful!!",Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getActivity(),"Invalid Username Password",Toast.LENGTH_SHORT).show();
txUserName.setText("");
txPassword.setText("");
}
}
【问题讨论】:
-
请出示您的代码
-
显示
DatabaseOpenHelper类代码 -
java.lang.NullPointerException -
你的代码在哪里?
-
像这样更改您的查询语句
String query="select * from register where username= "+user+" and password= "+pass";