成功登录android后从sqlite获取与用户相关的数据
我在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
- 身份证
- 名字
- 用户名
- 电子邮件
- 年龄
- 数量
- 密码
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创建的用户类。但老实说,我不知道我在做什么。谢谢你的反馈。我已经添加了改进的代码,但我还没有,如果您允许的话,让我修改这些更改以反映改进的代码。