-1

だから私は単純な Java プロジェクトを作成して、glassfish で JDBC をいじり、それがどのように機能するかを確認しています。プログラムは、調査のリストと、選択した調査の質問のリストを表示するだけです。ただし、選択したアンケートの質問のリストを表示できないようです。私は空の値を取得し続けます。これらは私が作成したメソッドです:

結果セットをオブジェクト モデル データ値に変換する

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 の QUESTION テーブルから質問のリストを照会するプライベート メソッド

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();
    }
}

結果セットを調査オブジェクトに変換するプライベート メソッド。

    private JHAKSurvey createSurveyFromResultSet(ResultSet rs){
    JHAKSurvey survey = new JHAKSurvey();
    Boolean active = false;
    String yes;
    try {
        yes = rs.getString("ACTIVE");
        survey.setId(rs.getLong("ID"));
        survey.setTitle(rs.getString("TITLE"));
        if (yes.equals(Character.toString('Y'))) {
            survey.setActive(true);
        } else {
            survey.setActive(false);
        }   
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    return survey;
}

私は何が欠けていますか?私もエラーが発生するようです:

cannot convert from void to JHAKQuestion

メソッドを試すと: createQuestionFromResultSet();

ありがとうございました

4

1 に答える 1

1

あなたの方法を見てください:

private void findQuestionsBySurvey(JHAKSurvey survey){

アンケートの質問を取得したいのですが、メソッドは void を返します。を返すようにしList<Question>ます。メソッドの本体では、結果セットを反復処理し、各行を質問に変換し、質問を に追加して、List<Question>このリストを返します。

または、メソッドの目的が引数として渡された調査に質問を追加することである場合は、メソッドの名前を次のように変更します。

private void addQuestionsToSurvey(JHAKSurvey survey) {

そして、メソッド本体内で、結果セットとアンケートを引数としてメソッドcreateQuestionFromResultSet(名前は ) を呼び出します。createQuestionsFromResultSetAndAddThemToSurvey

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);
    }

}
于 2012-07-21T17:12:35.850 に答える