如何创建ResultSet返回的行数组?

时间:2013-09-26 13:01:28

标签: java mysql

我还是java新手,所以我想寻求帮助,我真的不知道如何在这种情况下使用方括号,不。我甚至不知道如何使用它,我尝试了一些东西,这是结果,我现在的问题是我要添加:

schemeName += (rset.getString("scheme_name"));
schemeId += (Integer.parseInt(rset.getString("id")));

但我收到了一个错误,因为我认为我没有正确使用它。感谢您的帮助并向我解释如何使用它以及出现了什么问题。

所有代码:

String[] schemeName; // TODO, []
Integer[] schemeId; // TODO, []
        String HTML = "";

            Connection conn = null;
            try
            {
                conn = L2DatabaseFactory.getInstance().getConnection();

                PreparedStatement statement = conn.prepareStatement("SELECT * FROM buffer_scheme_list WHERE player_id=?");

                statement.setInt(1, player.getObjectId());
                ResultSet rset = statement.executeQuery();

                while (rset.next())
                {
                    try
                    {
                        schemeName += (rset.getString("scheme_name"));
                        schemeId += (Integer.parseInt(rset.getString("id")));
                    }
                    catch(Exception e)
                    {
                        // Blank
                    }
                }
            }

如果我改为:

 String schemeNamel
 Integer schemeId;

我在进一步的代码中遇到了另一个问题(所以我不能这样做); 进一步代码: 尝试了这个,但后来我在另外的代码中遇到了另一个问题:

if (schemeName.length > 0)
                    {
                        String MESSAGE = "";
                        String Temp = "";

                    int i=0, j=0;
                    Temp="<tr><td> </td> <td> </td></tr>";
                    String[] TRS = Temp.split(" ");
                    while (i <= schemeName.length - 1)
                    {
                        if (j>2)
                        {
                            j = 0; // vienas is dvejiu arba if j>2 (&& arba ||), j=0;
                            MESSAGE += TRS[j]+"<button value=\""
                            +schemeName[i]+
                            "\" action=\"bypass -h Quest "+QUEST_LOADING_INFO+" cast "
                            +schemeId[i]+" x x\" width=130 height=25 back=\"L2UI_ct1.button_df\" fore=\"L2UI_ct1.button_df\">"
                            +TRS[j+1];
                        }

                        i+=1;
                        j+=2;
                    }`

3 个答案:

答案 0 :(得分:2)

您已宣布array

String[] schemeName; // TODO, []
Integer[] schemeId; // TODO, []  

您正在尝试为数组指定值

schemeName += (rset.getString("scheme_name"));
schemeId += (Integer.parseInt(rset.getString("id")));

你做不到。

数组是一个容器对象,它包含固定数量的单个类型的值。创建数组时,将建立数组的长度。创建后,其长度是固定的。

此外,未初始化数组

答案 1 :(得分:1)

schemeNameschemeId是数组。他们不支持+操作。

Futhermore你没有初始化它们,所以它们仍然是null

我建议使用某种类似List或Set的集合。它们支持add方法。

以下是使用ArrayList的示例:

ArrayList<String> schemeName = new ArrayList<String>();
ArrayList<Integer> schemeId = new ArrayList<Integer>();

...

schemeName.add((rset.getString("scheme_name"));
schemeId.add(Integer.parseInt(rset.getString("id")));

如果您之后更喜欢使用Arrays,可以将列表转换为如下所示的数组:

String[] schemeNameArray= schemeName.toArray(new String[schemeName.size()]);
Integer[] schemeIdArray= schemeId.toArray(new Integer[schemeId.size()]);

如果schemeNameschemeId类似于值,则使用地图键。他们支持put

答案 2 :(得分:0)

您不需要为String和整数包含[]。您可以简单地将它们声明为

String schemeName = "";

Int schemeId = 0;