JDB C, подготовленный оператор getInt () возвращает 0 - PullRequest
0 голосов
/ 22 марта 2020

В моей БД каждый вопрос имеет действительный идентификатор (первичный ключ) и идентификатор категории (внешний ключ к таблице категорий). Проблема в том, что в Result Set для каждого вопроса оба идентификатора равны 0 вместо того, что записано в БД. Все остальные аргументы заполнены правильно.

private ArrayList<Question> questions = new ArrayList<Question>();
private Connection connie;
private PreparedStatement psShowQuestions;


psShowQuestions= connie.prepareStatement("SELECT * FROM question");        
ResultSet rs = psShowQuestions.executeQuery();

while (rs.next()) {
     questions.add(new Question(rs.getInt("questionID"), rs.getInt("categoryID"), rs.getString("question"), rs.getString("rightAns"), rs.getString("wrong1"), rs.getString("wrong2"), rs.getString("wrong3"), rs.getString("hint")));
}
Collections.shuffle(questions);

Редактировать 1

Вот оригинальный код (в посте я изменил переменные с немецкого на Engli sh):

Создание моей SQL таблицы:

CREATE TABLE `frage` (
  `frageID` int(11) NOT NULL,
  `kategorieID` int(11) DEFAULT NULL,
  `frage` varchar(200) NOT NULL,
  `richtig` varchar(200) NOT NULL,
  `falsch1` varchar(200) NOT NULL,
  `falsch2` varchar(200) NOT NULL,
  `falsch3` varchar(200) NOT NULL,
  `hinweis` varchar(200) NOT NULL,
  `anzFalsch` int(11) DEFAULT NULL,
  `anzRichtig` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
private ArrayList<Frage> fragen = new ArrayList<Frage>();
private Connection connie;
private PreparedStatement psGetFragen;

ResultSet rs = psGetFragen.executeQuery();

while (rs.next()) {
     fragen.add(new Frage(rs.getInt("frageID"), rs.getInt("kategorieID"), rs.getString("frage"), rs.getString("richtig"), rs.getString("falsch1"), rs.getString("falsch2"), rs.getString("falsch3"), rs.getString("hinweis")));
}
Collections.shuffle(fragen);

1 Ответ

1 голос
/ 22 марта 2020

Скорее всего, есть проблема с конструктором. Возможно, вы не установили questionID и categoryID в конструкторе, и поэтому вы получаете значение по умолчанию int как 0.

...