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

如何将MySQL查询存储到Java数组中?,java,mysql,arrays,Java,Mysql,Arrays,我在网上找到了将查询的数据存储到ArrayList中,然后将ArrayList转换为数组的建议。下面是我的代码,看起来我做得不对。SQL语法是正确的(我在MySQL中进行了测试)。任何关于如何更正我的代码的建议都会很有帮助,谢谢 public static void dxNameExerciseID(){ //String dxName = name; //String result = null; try{ con = DriverManager.ge

我在网上找到了将查询的数据存储到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;  
公共静态void dxNameExerciseID(){
//字符串dxName=名称;
//字符串结果=null;
试一试{
con=DriverManager.getConnection(url、用户、密码);
pst=con.prepareStatement(“从运动、条件运动、诊断中选择*,其中运动.EXACTION\U id=条件运动.EXACTION\U id\U fk和条件运动.DIRECATION\U id\U fk=诊断.DIRECATION\U id和诊断.DIRECATION\U name='内收肌张力');
rs=pst.executeQuery();
ArrayList=新建ArrayList();
while(rs.next()){
添加(rs.getString(“练习id”);
字符串[]结果=新字符串[list.size()];
结果=list.toArray(结果);

对于(int i=0;i这应该更好。请参阅如何首先通过迭代结果集创建字符串数组列表,一旦列表完成,就可以创建字符串数组

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]);
}
ArrayList list=new ArrayList();
while(rs.next()){
添加(rs.getString(“练习id”);
} 
字符串[]结果=新字符串[list.size()];
结果=list.toArray(结果);

对于(int i=0;i各方面的代码都很糟糕。Catch块永远不应该是空的。您错误地关闭了资源。如果出现问题,您怎么知道?传入连接,不要让该方法负责获取连接。使用PreparedStatement。应该扔掉此代码,以便可以重新开始。

这应该可以工作-您是在每次
迭代中创建
数组
,这就是问题的原因

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]);
} 
while(rs.next()){
添加(rs.getString(“练习id”);
}   
字符串[]结果=新字符串[list.size()];
结果=list.toArray(结果);

对于(inti=0;i您的一些代码应该进行重构

    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]);
        }   
ArrayList list=new ArrayList();
while(rs.next()){
添加(rs.getString(“练习id”);
}  
字符串[]结果=新字符串[list.size()];
结果=list.toArray(结果);

对于(int i=0;我只是缺少“}”,所以所有内容都在“while”循环中迭代?我还是个初学者,谢谢!谢谢!我如何保护我的“finally”块?我还是个初学者。你需要包装每个xxx.close()在它自己的try/catch中,确保如果一个失败,它不会停止执行并让所有其他资源打开。