【问题标题】:Could not Retrieve Username and Password from Sqlite Database无法从 Sqlite 数据库中检索用户名和密码
【发布时间】: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";

标签: android android-sqlite


【解决方案1】:
loginButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                String userName = txUserName.getText().toString();
                String password = txPassword.getText().toString();
                String storedPassword = helper
                        .getSinlgeEntry(userName);
                if (password.equals(storedPassword)) {
                // ur stuff
                }
            }
        });

将您的 getUserPass(String user, String pass) 更改为此并修改您的代码尝试以下操作:

public String getSinlgeEntry(String userName) {
db = dbHelper.getWritableDatabase();
    Cursor cursor = db.query("REGISTER", null, " USERNAME=?",
            new String[] { userName }, null, null, null);
    if (cursor.getCount() < 1) {
        cursor.close();
        return "NOT EXIST";
    }
    cursor.moveToFirst();
    String password = cursor.getString(cursor.getColumnIndex("PASSWORD"));
    cursor.close();
    return password;
}

或者发布你的 db 类的完整代码,我们将检查

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-31
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多