如何将MySQL查询存储到Java数组中?
我在网上找到了将查询的数据存储到ArrayList中,然后将ArrayList转换为数组的建议。下面是我的代码,看起来我做得不对。SQL语法是正确的(我在MySQL中进行了测试)。任何关于如何更正我的代码的建议都会很有帮助,谢谢如何将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
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中,确保如果一个失败,它不会停止执行并让所有其他资源打开。