我的应用程序在同一个表下的数据库中存储了三个项目:“name”,“email”,“mobile”。我想独立访问它们,以便我可以在各自的TEXTVIEW下显示它们的值。我独立访问它们,因为如果我通过一个函数访问它们,我将无法显示值
目前,我必须为每一列编写一个函数,以便从中获取信息。
获取“电子邮件”的示例
public String getUserEmail(String mobile) {
String[] columns = new String[] {USER_EMAIL};
Cursor c = MainDataBase.query(REG_INFO_TABLE, columns, USER_MOBILE_NUMBER + "=" + mobile, null, null, null, null);
String result = "";
int email = c.getColumnIndex(USER_EMAIL);
while(c.moveToNext()) {
result = result + c.getString(email);
}
return result;
}
所以,如果我需要“名称”,我将不得不编写另一个类似上面的函数来获取它。
现在,如果我需要访问50个这样的列,我将不得不制作50个听起来不太好的功能。有没有其他方法可以做到这一点?可以在这里使用数组吗?
答案 0 :(得分:1)
您应该考虑创建一个User
类来保存每个User
的数据。然后,您更改getAllRegInfo()
以返回User
个对象。这样做的好处是,您应用的其余部分只能访问User
,并且不知道数据来自何处。写
User user = getAllRegInfo();
String name = user.getName();
而不是
String[] user = getAllRegInfo();
String name = user[0];
此外,User
类可以包含任何类型的字段,而不是强制将所有数据转换为String
。
答案 1 :(得分:0)
好的,所以我找到了另一种选择。它只使用数组。
以下是代码:
public String[] getAllRegInfo() {
String[] columns = new String[] {USER_NAME, USER_EMAIL, USER_MOBILE_NUMBER};
Cursor c = MainDataBase.query(REG_INFO_TABLE, columns, null, null, null, null, null);
String[] result = new String[3];
for(int j=0; j<3; j++) {
result[j] = "";
}
int[] column = new int[3];
column[0] = c.getColumnIndex(USER_NAME);
column[1] = c.getColumnIndex(USER_EMAIL);
column[2] = c.getColumnIndex(USER_MOBILE_NUMBER);
while(c.moveToNext()) {
for(int i = 0; i<3; ++i) {
result[i] = c.getString(column[i]);
}
}
return result;
}
当然,必须手动将数组索引设置为列。像这样:
column[0] = c.getColumnIndex(USER_NAME);
column[1] = c.getColumnIndex(USER_EMAIL);
column[2] = c.getColumnIndex(USER_MOBILE_NUMBER);
解决方案似乎工作正常,但我不确定它的可扩展性。