2016-10-05 8 views
1

Когда я ищу данные в своей базе данных, мое приложение вынуждено остановиться. Это происходит только при наличии более двух строк, иначе это нормально. Я могу хорошо вставить данные. Как я могу это решить?Когда я ищу данные, мое приложение вынуждено остановиться. Как я могу это решить?

//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; 
} 
+2

Пожалуйста, используйте LogCat определить исключение, которое вызывает сбой и строку кода, где произошло исключение. –

+0

Отправьте свой Logcat здесь, чтобы изучить его –

+0

debug searchpass() и посмотреть, что является запросом. Не должно быть никакого небезопасного пространства –

ответ

-1

В этом ваш используют как cursor.moveToNext и cursor.movetoFirst обоих. Я не думаю, что вы должны сделать то и другое. использовать тот, который cursor.moveToNext

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

В любом случае – Shmuel

+0

Спасибо брату ... Его правильно .. теперь его работа ... Спасибо, что так много .... @sunil – Aadhi

 Смежные вопросы

  • Нет связанных вопросов^_^