0

我正在做作业,但我无法完成我的程序...

我有 JTable 类,它在我的代码中创建表......我必须编写从 sql 数据库获取信息并将其写入列表的方法

方法必须看起来像:

public static List selectAnswers (int questionId) throws SQLException, IOException

以下代码是我写的:

public static List<AnswerRow> selectAnswers (int questionId) throws SQLException, IOException
{
    Connection veza = connectToDatabase();

    Properties query = new Properties();

    AnswersTableModel atm = new AnswersTableModel();

    String selectAnswers = query.getProperty("selectAnswers");

    PreparedStatement preparedStatement = veza.prepareStatement(selectAnswers);

    ResultSet rs = preparedStatement.executeQuery();

    List<AnswerRow> lista = new ArrayList<AnswerRow>();

    while(rs.next()){

        String answerText = rs.getString("answerText");
        boolean isRight = rs.getBoolean("answerRight");

                    ?????????????????????????????????????????????????


    }

    closeConnectionToDatabase(veza);

    return lista;
}

???字段丢失,我不知道该写什么来将信息 answeText 和 isRight 写入 AnswerRow 类、AnswerTableModel、列表...

制作 JTable 的代码(给了我,我的老师不能更改)在这里:

package hr.tvz.java.deveti.model;

import java.util.List;
import java.util.ArrayList;

import javax.swing.table.AbstractTableModel;

public class AnswersTableModel extends AbstractTableModel {

    private Object[][] answers;
    private String[] columnNames;

    public AnswersTableModel (String[] colNames){
        super();
        columnNames = colNames;
    }

    public AnswersTableModel() {
        super();
        this.columnNames = new String[AnswerRow.TABLE_COLUMNS];
        this.columnNames[0] = "Odgovor";
        this.columnNames[1] = "Točan/Netočan";
    }

    public java.lang.Class<?> getColumnClass(int columnIndex) {
        return getValueAt(0, columnIndex).getClass();
    }

    public int getColumnCount() {
        return AnswerRow.TABLE_COLUMNS;
    }

    public int getRowCount() {
        if (answers != null)
            return answers.length;
        else
            return 0;
    }

    public Object getValueAt(int row, int column) {
        return answers[row][column];
    }

    public String getColumnName(int column){
        return columnNames[column];
    }

    public void setValueAt (Object aValue, int rowIndex, int columnIndex){
        answers[rowIndex][columnIndex] = aValue;
    }

    public boolean isCellEditable (int rowIndex, int columnIndex){
        return true;
    }

    public void addNewRow(){
        Object[] o = new Object[] {"", false};
        if ((answers == null) || (answers.length == 0)) {
            answers = new Object[][] {o};
        }else{
            Object[][] answersTemp = new Object[answers.length + 1][AnswerRow.TABLE_COLUMNS];
            for (int i = 0; i < answers.length; i++)
                answersTemp[i] = answers[i];
            answersTemp[answersTemp.length - 1] = o;
            answers = answersTemp;
        }
    }

    public List<AnswerRow> getAnswerRows() {
        List<AnswerRow> list = new ArrayList<>();
        for (Object[] oRow : answers) {
            AnswerRow row = new AnswerRow();
            row.setAnswer((String) oRow[0]);
            row.setRight((boolean) oRow[1]);
            list.add(row);
        }

        return list;
    }

    public void setAnswerRows(List<AnswerRow> answerRows){
        if (answerRows.size() == 0 ) {
            this.answers = new Object[0][0];
            return;
        }
        this.answers = new Object[answerRows.size()][AnswerRow.TABLE_COLUMNS];
        for (int i = 0; i < answers.length; i++){
            answers[i][0] = answerRows.get(i).getAnswer();
            answers[i][1] = answerRows.get(i).isRight();
        }
        this.columnNames = new String[AnswerRow.TABLE_COLUMNS];
        this.columnNames[0] = "Odgovor";
        this.columnNames[1] = "Točno/Netočno";
    }

    public class AnswerRow {
        public static final int TABLE_COLUMNS = 2;
        private boolean isRight;
        private String answer;

        public AnswerRow(){
            answer = "";
            isRight = false;
        }

        public AnswerRow(String answer, boolean isRight){
            this.answer = answer;
            this.isRight = isRight;
        }

        public String getAnswer() {
            return answer;
        }

        public void setAnswer(String answer){
            this.answer = answer;
        }

        public boolean isRight(){
            return isRight;
        }

        public void setRight(boolean isRight){
            this.isRight = isRight;
        }
    }
}

请帮助我..谢谢!

4

2 回答 2

2
List<AnswerRow> lista = new ArrayList<AnswerRow>();

    while(rs.next()){

        String answerText = rs.getString("answerText");
        boolean isRight = rs.getBoolean("answerRight");

        //Create AnswerRow instance and set values to it and Add it to list.
        AnswersTableModel .AnswerRow ansrow = atm.new AnswerRow();
        ansrow.setAnswer(answerText);
        ansrow.setRight(isRight);

       //Add it to list.
       lista.add(ansrow);
    }

我不确定的一件事是你为什么拥有AnswersTableModel它以及你用它做什么。

于 2013-01-09T16:32:27.010 回答
0

使用 public AnswerRow(String answer, boolean isRight) 构造函数创建对象

AnswerRow ar=null;
while(rs.next()){

    String answerText = rs.getString("answerText");
    boolean isRight = rs.getBoolean("answerRight");
    ar=new AnswerRow(answerText, isRight);
    lista.add(ar);

}
于 2013-01-09T17:07:41.733 回答