成功登录android后从sqlite获取与用户相关的数据

成功登录android后从sqlite获取与用户相关的数据,android,sql,sqlite,android-sqlite,Android,Sql,Sqlite,Android Sqlite,我在android应用程序中的sqlite中有一个用户表。表中的列为: 身份证 名字 用户名 电子邮件 年龄 数量 密码 我能够使用此人的电子邮件和密码成功登录,并且我使用意图将电子邮件传递到仪表板活动。如何查询数据库以显示此人的姓名、用户名、年龄和金额,并将其传递给不同的文本视图 这是我的用户类 public class User { public int id; public String name; public String username; pu

我在android应用程序中的sqlite中有一个用户表。表中的列为:

  • 身份证
  • 名字
  • 用户名
  • 电子邮件
  • 年龄
  • 数量
  • 密码
我能够使用此人的电子邮件和密码成功登录,并且我使用意图将电子邮件传递到仪表板活动。如何查询数据库以显示此人的姓名、用户名、年龄和金额,并将其传递给不同的文本视图

这是我的用户类

public class User {

    public int id;
    public String name;
    public String username;
    public String email;
    public String password;
    public String age;
    public  String amount;

    public User (int id, String name, String username, String email, String age, String amount, String password){
        this.id = id;
        this.name = name;
        this.username = username;
        this.email = email;
        this.age = age;
        this.amount = amount;
        this.password = password;
    }

    public int getId(){ return id; }
    public String getName(){ return name; }
    public String getUsername(){ return username; }
    public String getEmail(){return email; }
    public String getAge(){ return age; }
    public String getAmount(){ return amount; }
    public String getPassword() {return password; }



}
下面是我在SQLiteHelper类中的getData方法

  public String getData(int id, String name, String username, String email, String age, String amount, String password){
        SQLiteDatabase db = this.getReadableDatabase();
        Cursor res = db.rawQuery("select * from users where email='" + email + "'", null);
        res.moveToFirst();
        while (res.isAfterLast() == false) {
            User response = new User(id, name, username, email, age, amount, password);
            response.email = res.getString(res.getColumnIndex(Table_Column_2_Email));
            response.name = res.getString(res.getColumnIndex(Table_Column_1_Name));
            response.username = res.getString(res.getColumnIndex(Table_Column_1_Username));
            response.age = res.getString(res.getColumnIndex(Table_Column_3_Age));
            response.amount = res.getString(res.getColumnIndex(Table_Column_3_Amount));
        }
        return response;
    }

现在,如何获取loggin用户的数据并将其传递到仪表板活动中的textview?我在Android开发方面有几年的经验,但在sqlite方面几乎没有经验。我确信答案很简单,但我还没有弄明白。

也许只是创建一些自定义类

public class User {
    public int id;
    public String name;
    public String username;
    public String email;
    public int age;
    public int amount;
    public String password;
}
而不是返回
字符串响应
返回
新用户
满足游标的数据

SQLiteDatabase db = this.getReadableDatabase();
Cursor res =  db.rawQuery("select * from users where email='" + email + "'", null);
res.moveToFirst();
while(res.isAfterLast() == false){
    User response = new User();
    response.email = res.getString(res.getColumnIndex(Table_Column_2_Email));
    // rest of columns
    return response;
}
return null;

您还可以使用
Intent
/
Bundle
(中的一些文档)

使
用户实现Parcelabe
,并将其直接传递给新的
活动
只要有可能,id很可能是主键

如果您要求数据库返回用户传递的id的所有内容,并且电子邮件条目为
null
,那么您的查询只会返回
null
。作为主键的
id
将永远不会为
null

但是,如果您要求它返回用户的所有信息,以及传递的电子邮件,而该电子邮件不在表中,则数据库将抛出一个错误,在android端处理该错误将困难得多

请确保您可以尝试以下操作:

public String getData(String id) {

    String response = null;
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res =  db.rawQuery(
        "SELECT * 
         FROM users
         WHERE id = " + id + ";", null
    );
    res.moveToFirst();
    while(res.isAfterLast() == false){
        response += (res.getString(res.getColumnIndex(Table_Column_2_Email)));
        res.moveToNext();
    }
    return response;
}

在这样做的同时,我还建议您模拟创建一个用户对象,如建议的。同样出于学习目的,让
响应从数据库返回时登录到控制台,以正确创建用户类的构造函数。

不要被类型着色搞糊涂,那里有一些奇怪的地方…嗨,我已经按照你的建议做了,并更新了我的问题。现在我无法在仪表板上显示数据,它究竟显示了什么?或者你有没有收到其他错误信息?没有,我没有收到任何错误信息。我想在我的仪表板活动中获取值。我不知道该怎么做。您好,我已经取得了一些进展,我能够获取值并将其记录到控制台,例如,我能够获取response.amount并将其记录到控制台。现在,如何在Dashboard类中访问该值是我的问题。我尝试使用我用其方法getAmount创建的用户类。但老实说,我不知道我在做什么。谢谢你的反馈。我已经添加了改进的代码,但我还没有,如果您允许的话,让我修改这些更改以反映改进的代码。