簡體   English   中英

在Android中單擊“搜索”按鈕時從數據庫中檢索數據

[英]Retrieve data from the database when Search Button is click in Android

我在我的活動中有editText (用戶名,名字,姓氏和電子郵件地址)供用戶注冊。 用戶有權通過單擊“ 搜索”按鈕來搜索他輸入的用戶名是否已存在。 如果用戶名已存在,則將顯示與該用戶名相關的所有信息,例如用戶名。 但是,如果用戶單擊按鈕,如果它不存在,我的應用程序崩潰,我收到CursorIndexOutOfBoundsException錯誤。 我該如何調試那個?

MainActivity.java

btn_Search.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        String searchableUser = txt_User.getText().toString();

        ConsUserRegistration consUserRegistration = db.searchUser(searchableUser);

        String searchUser = consUserRegistration.getUser().toString();
        String searchFirst = consUserRegistration.getFirstName().toString();
        String searchLast = consUserRegistration.getLastName().toString();
        String searchEmail = consUserRegistration.getEmail().toString();

        txt_User.setText(searchUser);
        txt_First.setText(searchFirst);
        txt_Last.setText(searchLast);
        txt_Email.setText(searchEmail);             
    }
});

DatabaseHandler.java

public ConsUserRegistration searchUser(String username){

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(Constants.TABLE_USER, new String[] {Constants.KEY_USER, Constants.KEY_FIRST, 
            Constants.KEY_LAST, Constants.KEY_EMAIL}, Constants.KEY_USER + " =? ", 
            new String[] { String.valueOf(username) }, null, null, null);
    if (cursor != null)
        cursor.moveToFirst();

    ConsUserRegistration search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));

    return search;

}

所以...如果您的光標為空或沒有元素會發生什么? 你還在嘗試訪問它......

試試像......

if (cursor != null && cursor.moveToFirst())  {    

...

嘗試這個:

MainActivity.java

btn_Search.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View arg0) {
        String searchableUser = txt_User.getText().toString();

        ConsUserRegistration consUserRegistration = db.searchUser(searchableUser);
        if (consUserRegistration != null){

           String searchUser = consUserRegistration.getUser().toString();
           String searchFirst = consUserRegistration.getFirstName().toString();
           String searchLast = consUserRegistration.getLastName().toString();
           String searchEmail = consUserRegistration.getEmail().toString();

           txt_User.setText(searchUser);
           txt_First.setText(searchFirst);
           txt_Last.setText(searchLast);
           txt_Email.setText(searchEmail);
        }else{
         Toast.makeText(getApplicationContext(), "Username Not Found", Toast.LENGTH_LONG).show();
        }               
    }
});

DatabaseHandler.java

public ConsUserRegistration searchUser(String username){
    ConsUserRegistration search;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.query(Constants.TABLE_USER, new String[] {Constants.KEY_USER, Constants.KEY_FIRST, 
            Constants.KEY_LAST, Constants.KEY_EMAIL}, Constants.KEY_USER + " =? ", 
            new String[] { String.valueOf(username) }, null, null, null);
    if (cursor != null && cursor.moveToFirst()){
            search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));
        }else{
            search = null;
        }

    return search;

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM