0

我的应用程序在同一张表下的数据库中存储了三个项目:“姓名”、“电子邮件”、“手机”。我想独立访问它们中的每一个,以便我可以在它们各自的 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 个这样的函数,这听起来不太好。我还有其他方法可以做到这一点吗?这里可以使用数组吗?

4

2 回答 2

1

您应该考虑创建一个User类来保存每个User. 然后你改变getAllRegInfo()返回一个User对象。这样做的好处是你的应用程序的其余部分只访问Users 并且不知道数据来自哪里。写起来也更有表现力

User user = getAllRegInfo();
String name = user.getName();

而不是

String[] user = getAllRegInfo();
String name = user[0];

此外,一个User类可以具有任何类型的字段,而不是被迫将所有数据转换为String.

于 2013-08-17T20:08:10.997 回答
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);

该解决方案似乎运行良好,但我不确定它的可扩展性如何。

于 2013-08-16T17:42:35.757 回答