我正在尝试在导航抽屉中获取用户详细信息。我有两个不同的表,一个表已经存储了用户名和课程,另一个表具有在注册过程中获取的用户的ID和电子邮件。我想显示用户名,ID,课程和电子邮件。我确实有一个具有ID,电子邮件和密码的用户类,用于注册,但没有名称和课程。我应该如何从此类中获取数据?
以下方法用于从具有相同ID的表中获取用户名。我想在导航抽屉上显示它。我应该如何调用该函数并显示结果?
public String getUserNameFromSID(String sid) {
String rv = "";
String whereclause = KEY_SID + "=?";
String[] whereargs = new String[]{sid};
SQLiteDatabase db = this.getReadableDatabase();
Cursor csr = db.query(TABLE_USERINFO,null,whereclause,whereargs,null,null,null);
if (csr.moveToFirst()) {
rv = csr.getString(csr.getColumnIndex(KEY_NAME));
}
csr.close();
return rv;
答案 0 :(得分:1)
您可以使用 JOIN ,(我相信从前面的问题来看,两个表中都包含SID,因此这就是您用作 JOIN 的基础)。
因此您可以使用类似SELECT * FROM userinfo JOIN userreg ON userinfo.sid = userreg.sid
要使用 query 便捷方法,JOIN必须是第1个(表)参数的一部分。
因此上述代码将被编码为:-
public String getUserNameFromSID(String sid) {
String rv = "";
String joinclause = " JOIN " + TABLE_USERREG + " ON " + TABLE_USERINFO + "." + KEY_SID + " = " + TABLE_USERREG + "." + KEY_SID; //<<<<<<<<<< ADDED
String whereclause = KEY_SID + "=?";
String[] whereargs = new String[]{sid};
SQLiteDatabase db = this.getReadableDatabase();
Cursor csr = db.query(TABLE_USERINFO + joinclause,null,whereclause,whereargs,null,null,null); //<<<<<<<<<< CHANGED
if (csr.moveToFirst()) {
rv = csr.getString(csr.getColumnIndex(KEY_NAME));
}
csr.close();
return rv;
}
问题是,我需要将Sid参数传递给 我只能在注册/登录页面上执行的功能。那怎么能 我将此值传递到导航页面吗?
Android所使用的术语是“活动”,而不是页面。您可以在实例化一个Intent为调用做准备之后,使用Intent Extras将数据从一个活动传递到另一个被调用/启动/调用的活动。也就是说,该活动是直接从父活动(在您的情况下为注册活动)中调用的。
例如,如果从初始活动中调用了注册活动并从该活动中返回,那么您仍然可以使用意图返回值,但是应该使用startActivityForResult调用/启动/调用注册活动。开始注册活动的活动应覆盖onActivityResult方法。注册活动设置了意向附加,并使用setResult指示结果代码,然后返回意向。
关于Stack溢出的例子很多,例如Sending data back to the Main Activity in Android