如何在Java JDBC中显示resultset中的arrayList内容?
因此,我正在制作一个简单的java项目,在glassfish中使用JDBC,看看它是如何工作的。该程序仅为您选择的调查显示调查列表和问题列表。但是,我似乎无法显示所选调查的问题列表。我总是得到空值。以下是我创建的方法: 将结果集转换为对象模型数据值如何在Java JDBC中显示resultset中的arrayList内容?,jdbc,Jdbc,因此,我正在制作一个简单的java项目,在glassfish中使用JDBC,看看它是如何工作的。该程序仅为您选择的调查显示调查列表和问题列表。但是,我似乎无法显示所选调查的问题列表。我总是得到空值。以下是我创建的方法: 将结果集转换为对象模型数据值 public JHAKSurvey findSurvey(long id) { System.out.println("JDBC: FIND SURVEY"); Connection connection = null; Pr
public JHAKSurvey findSurvey(long id) {
System.out.println("JDBC: FIND SURVEY");
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
JHAKSurvey survey = null;
try {
connection = openConnection();
String query = "SELECT * FROM APP.SURVEY WHERE ID=?";
ps = connection.prepareStatement(query);
ps.setLong(1, id);
rs = ps.executeQuery();
while (rs.next()) {
survey = createSurveyFromResultSet(rs);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(connection);
}
return survey;
}
从问题表中查询调查id问题列表的专用方法
private void findQuestionsBySurvey(JHAKSurvey survey){
System.out.println("JDBC: FIND QUESTIONS BY SURVEY");
Connection connection = null;
PreparedStatement ps = null;
try {
connection = openConnection();
String query = "SELECT * FROM APP.QUESTION WHERE SURVEYID=?";
ps = connection.prepareStatement(query);
ps.setLong(1, survey.getId());
ps.executeQuery(query);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(connection);
}
}
将“查找结果集”列表转换为问题对象并将其添加到调查对象的私有方法
private void createQuestionFromResultSet(ResultSet rs, JHAKSurvey survey){
ArrayList<JHAKQuestion> qList = new ArrayList<JHAKQuestion>();
JHAKQuestion question = new JHAKQuestion();
JHAKSurvey ss = new JHAKSurvey();
//qList.add(survey.getQuestions());
try {
while (rs.next()) {
//question.setDescription(qList.toString());
question.setId(rs.getLong("ID"));
question.setDescription(rs.getString("DESCRIPTION"));
qList.add(question);
survey.setQuestions(qList);
}
System.out.println("createQuestionFromResultSet : JDBC : successful");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("createQuestionFromResultSet : JDBC : fail");
e.printStackTrace();
}
}
我错过了什么?我似乎也有错误:
cannot convert from void to JHAKQuestion
当我尝试以下方法时:createQuestionFromResultSet()
谢谢你看看你的方法:
private void findQuestionsBySurvey(JHAKSurvey survey){
您希望获取调查的问题,但该方法返回void。使其返回一个列表
。在方法体中,迭代结果集,将每一行转换为一个问题,将问题添加到列表
,然后返回该列表
或者,如果该方法的目标是向作为参数传递的调查中添加问题,则将该方法重命名为
private void addQuestionsToSurvey(JHAKSurvey survey) {
并且,在方法体内部,调用方法createQuestionFromResultSet
(该方法应命名为createquestionsfromResultSet,并将其添加到survey
),将结果集和调查作为参数:
private void findQuestionsBySurvey(JHAKSurvey survey){
System.out.println("JDBC: FIND QUESTIONS BY SURVEY");
Connection connection = null;
PreparedStatement ps = null;
try {
connection = openConnection();
String query = "SELECT * FROM APP.QUESTION WHERE SURVEYID=?";
ps = connection.prepareStatement(query);
ps.setLong(1, survey.getId());
ResultSet rs = ps.executeQuery(query);
createQuestionFromResultSet(survey);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(connection);
}
}
private void findQuestionsBySurvey(JHAKSurvey survey){
System.out.println("JDBC: FIND QUESTIONS BY SURVEY");
Connection connection = null;
PreparedStatement ps = null;
try {
connection = openConnection();
String query = "SELECT * FROM APP.QUESTION WHERE SURVEYID=?";
ps = connection.prepareStatement(query);
ps.setLong(1, survey.getId());
ResultSet rs = ps.executeQuery(query);
createQuestionFromResultSet(survey);
} catch (Exception e) {
e.printStackTrace();
} finally {
closeConnection(connection);
}
}