当我搜索数据时,我的应用程序被迫停止。我该如何解决这个问题?

When I search for data, my app forced to stop. How can I solve this?

当我在我的数据库中搜索数据时,我的应用程序被迫停止。它仅在超过 2 行时发生,否则就可以了。我可以很好地插入数据。我该如何解决?

//click event
public void OnButtonClick(View v) {
    dbhelper.open();

    EditText a = (EditText)findViewById(R.id.user_tf);
    String User_Name = a.getText().toString();
    EditText b = (EditText)findViewById(R.id.password_tf);
    String Password = b.getText().toString();
    sqlitedatabase = dbhelper.getReadableDatabase();
    String password = dbhelper.searchpass(User_Name);

    if(Password.equals(password)) {
        Toast.makeText(getBaseContext(), "User and pass correct",  Toast.LENGTH_LONG).show();
        dbhelper.close();
        Intent intent = new Intent(Login_activity.this, Homepage.class);
        startActivity(intent);
    } else {
        Toast.makeText(getBaseContext(),"User or pass incorrect", Toast.LENGTH_LONG).show();
        dbhelper.close();
        Intent intent = new Intent(Login_activity.this,  Login_activity.class);
        startActivity(intent);
    }

// Searchpass in DBHelper class
public String searchpass(String user_name) {
    db.isOpen();
    db = this.getReadableDatabase();
    String query = "SELECT " + UserConstruct.newUserinfo.UserName + ", " + UserConstruct.newUserinfo.Password + " FROM " + UserConstruct.newUserinfo.TableName + " ";
    // int a = query.length();
    Cursor cursor = db.rawQuery(query, null);
    String a, b;
    b = "not found";
    do {
        if (cursor.moveToFirst()) {
            a = cursor.getString(0);
            if (a.equals(user_name)) {
                b = cursor.getString(1);
            }
        }
    } while (cursor.moveToNext());

    return b;
}

在此您同时使用了 cursor.moveToNextcursor.movetoFirst。我认为你不应该两者都做。使用 cursor.moveToNext

    while (cursor.moveToNext()) {
        a = cursor.getString(0);
        if (a.equals(user_name)) {
            b = cursor.getString(1);
        }
     }