【问题标题】:Search record and retrieve it from the database in Android在Android中搜索记录并从数据库中检索它
【发布时间】:2013-07-16 15:13:15
【问题描述】:

在我的活动中,我有 editText 的 (用户名、名字、姓氏和电子邮件地址)。当用户输入一个现有的用户名时,他可以通过点击搜索按钮进行搜索,用户拥有的数据将出现在editText的中。

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;

}

但是当用户单击搜索按钮并且没有从用户名 EditText 输入任何字符时,我在 DatabaseHandler 中收到 CursorIndexOutOfBoundsException 错误: ConsUserRegistration search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1), cursor.getString(2), cursor.getString(3));

另外,由于数据库崩溃,我无法从数据库中检索数据。

【问题讨论】:

  • 糟糕,对不起。刚刚编辑了我的问题
  • nullPointerExceptions 在哪一行代码?查看日志。

标签: android sqlite


【解决方案1】:

改变

db.searchUser(searchableUser);
ConsUserRegistration consUserRegistration = new ConsUserRegistration();

ConsUserRegistration consUserRegistration = db.searchUser(searchableUser);

【讨论】:

  • 您建议的代码正在运行,但是,当我没有输入用户名时,我在 DatabaseHandler 中得到 CursorindexOutOfBoundsException 行: ConsUserRegistration search = new ConsUserRegistration (cursor.getString(0), cursor.getString(1 ), cursor.getString(2), cursor.getString(3));
【解决方案2】:

Button button_Search(button)findViewById(r.I'd.itsIdInYourXml);

按钮可能需要声明或定义进一步需要查看整个代码

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多