如何将MySQL查询存储到Java数组中?

时间:2013-04-09 20:37:05

标签: java mysql arrays

我在网上找到了将查询数据存储到ArrayList然后将ArrayList转换为数组的建议。下面是我的代码,看起来我没有正确地做到这一点。 SQL语法是正确的(我在MySQL中测试过)。有关如何更正我的代码的任何建议都会有所帮助,谢谢!

public static void dxNameExerciseID(){
    //String dxName = name;
    //String result = null;

    try{
        con = DriverManager.getConnection(url, user, password);  
        pst = con.prepareStatement("SELECT * FROM exercise,condition_exercise,diagnosis WHERE exercise.exercise_id = condition_exercise.exercise_id_fk AND condition_exercise.diagnosis_id_fk = diagnosis.diagnosis_id AND diagnosis.diagnosis_name = 'Adductor Strain';");
        rs = pst.executeQuery();  

        ArrayList<String> list= new ArrayList<String>();
        while (rs.next()) {
            list.add(rs.getString("exercise_id"));

            String[] result = new String[list.size()];
            result = list.toArray(result);

            for(int i =0; i<result.length; i++){
                System.out.println(result[i]);
            }   
        }   

    }catch(SQLException ex){
    }finally {
        try {
            if (rs != null){
                rs.close();
            }
            if (pst != null){
                pst.close();
            }
            if (con != null){
                con.close();
            }
        }catch(SQLException ex){
        }
    }

//return result;  

}

4 个答案:

答案 0 :(得分:3)

这应该更好。通过遍历ResultSet来了解如何首次创建String的ArrayList,一旦列表完成,您就可以创建字符串数组。

ArrayList<String> list= new ArrayList<String>();
while (rs.next()) {
    list.add(rs.getString("exercise_id"));   
} 

String[] result = new String[list.size()];
result = list.toArray(result);

for(int i =0; i<result.length; i++){
    System.out.println(result[i]);
}

顺便说一下:你的终结块是不安全的。如果rs.close()失败,则不会关闭连接。

答案 1 :(得分:0)

各方面的代码都很糟糕。 Catch块永远不应为空。您错误地关闭了资源。如果出现问题,你怎么知道?传递连接,不要让方法负责获取它。使用PreparedStatement。这个代码应该扔掉,这样你就可以重新开始了。

答案 2 :(得分:0)

这应该有效 - 您在每个Array上创建了iteration,这是您遇到问题的原因

while (rs.next()) {
       list.add(rs.getString("exercise_id")); 
}   

String[] result = new String[list.size()];
result = list.toArray(result);
for(int i =0; i<result.length; i++){
      System.out.println(result[i]);
} 

答案 3 :(得分:0)

您的部分代码应该重构

    ArrayList<String> list= new ArrayList<String>();
    while (rs.next()) {
        list.add(rs.getString("exercise_id"));


    }  
     String[] result = new String[list.size()];
        result = list.toArray(result);

        for(int i =0; i<result.length; i++){
            System.out.println(result[i]);
        }