如何通过用户名从数据库表中检索数据?

时间:2015-05-20 11:14:29

标签: android sqlite

我不太确定使用'用户名'是否合适?作为我选择检索其他数据而不是使用ID。仅供参考,我的用户名是唯一的,因为没有任何其他用户具有相同的用户名。我这样做是因为我不确定如何使用或调用表中的id。 我收到此错误:

    CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1

我有一个带有以下代码的DatabaseAdapter.java:

   public Cursor getData(String username){
      SQLiteDatabase db = dbHelper.getReadableDatabase();
      Cursor cur =  db.query(TABLE_PROFILE, COLUMNS_PROFILE, " username=?", new String[]{username}, null, null, null, null );
      if (cur != null){
          cur.moveToFirst();
      }
      return cur;
   }

使用EditProfileFragment.java:

    dbAdapter = new DatabaseAdapter(getActivity());
    dbAdapter = dbAdapter.open();

    un = getArguments().getString("username");  

    Cursor cur = dbAdapter.getData(un);
    String password = cur.getString(cur.getColumnIndexOrThrow(DatabaseAdapter.KEY_PASSWORD));
    String age = cur.getString(cur.getColumnIndexOrThrow(DatabaseAdapter.KEY_AGE));
    String weight = cur.getString(cur.getColumnIndexOrThrow(DatabaseAdapter.KEY_WEIGHT));
    String height = cur.getString(cur.getColumnIndexOrThrow(DatabaseAdapter.KEY_HEIGHT));
    String gender= cur.getString(cur.getColumnIndexOrThrow(DatabaseAdapter.KEY_GENDER));

我在我的日志中获取String un,表示我的用户名已成功通过。我用数据从光标检索数据模糊,请提前帮助并感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

试试这个答案

public Cursor getData(String username){
    SQLiteDatabase db = dbHelper.getReadableDatabase();
    String sql="select * from " + tableName + " where username =?";
    Cursor cursor=database.rawQuery(sql,new String{username});
    if (cursor != null)
{   cursor.moveToFirst();}
    return cursor;
}

希望这会对你有所帮助

答案 1 :(得分:0)

EditText username; 
String S;

S = username.getText().toString();
  

现在运行此查询

String selectQuery = "SELECT* FROM **TABLE NAME** WHERE username=S ";
 Cursor c = db.rawQuery(selectQuery, new String[] { username });
 if (c.moveToFirst()) {
 temp_address = c.getString(0);
 }
  c.close();

答案 2 :(得分:0)

这是一小段代码。在这里,我根据用户名/电子邮件和密码验证用户是否存在。我知道这不是完整的解决方案,但可以指导您正确的方向(不知何故)。

2015-05-20

答案 3 :(得分:0)

String name;

name = username.getText()。toString();

"从yourTable中选择*,其中username ='" + name +"'"

运行此查询。我希望它能帮到你..!