Чтение определенного поля данных из базы данных в Java - PullRequest
0 голосов
/ 21 апреля 2019

Сначала какой-то контекст:

Часть 1. Я получаю все значения из столбца VOTES в таблице. SURVEYRESULTS

Часть 2. Каждый раз, когда я голосую за конкретного животного, addVote ()сработает со своим конкретным параметром Я знаю, какое животное нуждается в дополнительном голосовании.Поэтому я добавляю 1 голос к этому животному.

По какой-то причине происходит следующее:

Допустим, все животные имеют 0 голосов в моей базе данных.Я тогда голосую за "Собаку".«Собака» тогда имеет 1 голос.Затем я снова голосую за «Собаку», «Собака» не будет иметь 2 голосов, но все равно 1 голос.

Таким образом, кажется, что код работает, но что «int voiceDataDog» остается на значении 0Я не понимаю, почему это так.

Вот мой код:

int voteDataDog;
int voteDataCat;
int voteDataBird;
int voteDataSnake;
int voteDataNone;

// Part 1
public void getVoteData() throws SQLException{
    s = conn.createStatement();
    ResultSet rs = s.executeQuery("SELECT VOTES FROM SURVEYRESULTS");
    while(rs.next()){
        voteDataDog = rs.getInt("VOTES");
        voteDataCat = rs.getInt("VOTES");
        voteDataBird = rs.getInt("VOTES");
        voteDataSnake = rs.getInt("VOTES");
        voteDataNone = rs.getInt("VOTES");
    }
}

//Part 2
public void addVote(String parameter) throws SQLException {

    this.getVoteData();

    if(parameter.equals("1")){
        voteDataDog ++;
        s.execute("UPDATE SURVEYRESULTS SET VOTES= " + this.voteDataDog + " WHERE ID=1");
    }

    if(parameter.equals("2")){
        voteDataCat ++;
        s.execute("UPDATE SURVEYRESULTS SET VOTES= " + voteDataCat + " WHERE ID=2");
    }

    if(parameter.equals("3")){
        voteDataBird ++;
        s.execute("UPDATE SURVEYRESULTS SET VOTES= " + voteDataBird + " WHERE ID=3");
    }

    if(parameter.equals("4")){
        voteDataSnake ++;
        s.execute("UPDATE SURVEYRESULTS SET VOTES= " + voteDataSnake + " WHERE ID=4");
    }

    if(parameter.equals("5")){
        voteDataNone ++;
        s.execute("UPDATE SURVEYRESULTS SET VOTES= " + voteDataNone + " WHERE ID=5");
    }

    rs = s.executeQuery("SELECT * FROM surveyresults ORDER BY id");
    rmd = rs.getMetaData();
}

Пример вывода:

-----------------------------------------------------------------------
ID          SURVEYOPTION         VOTES       
1           Dog                  0           
2           Cat                  1           
3           Bird                 0           
4           Snake                0           
5           None                 0           
-----------------------------------------------------------------------

На самом деле мне нужен голосзначения для каждого животного.

int voteDataDog;
int voteDataCat; --> needs to become value '1' after Part 1
int voteDataBird;
int voteDataSnake;
int voteDataNone;

Ответы [ 2 ]

2 голосов
/ 21 апреля 2019
ResultSet rs = s.executeQuery("SELECT VOTES FROM SURVEYRESULTS");
while(rs.next()){
        voteDataDog = rs.getInt("VOTES");
        voteDataCat = rs.getInt("VOTES");
        voteDataBird = rs.getInt("VOTES");
        voteDataSnake = rs.getInt("VOTES");
        voteDataNone = rs.getInt("VOTES");
    }

Здесь вы присваиваете одно и то же значение каждой переменной.

Вы выполняете запрос «Выбор голосов ...». Допустим, первый ряд возвращает 3. Теперь набор результатов назначит 3 для voiceDataDog, Cat и т. Д. Теперь набор результатов переходит к следующей строке со значением 0, теперь он присваивает 0 каждому животному.

Сделайте разные запросы для каждого животного. Что-то вроде "выбрать голоса из результатов опроса, где id = 1" для собак и так далее для каждого животного.

0 голосов
/ 21 апреля 2019

Попробуйте это

ResultSet rs = s.executeQuery("SELECT VOTES FROM SURVEYRESULTS");

    while(rs.next()){

        int currentId = rs.getInt("ID")

        //Shows the current id 
        System.out.printLn("Current ID = "+currentId);


        if(currentId == 1 ){

        voteDataDog = rs.getInt("VOTES");

        }else if(currentId == 2 ){

            voteDataCat = rs.getInt("VOTES");

        }else if(currentId == 3){

             voteDataBird = rs.getInt("VOTES");

        }else if(currentId == 4 ){

            voteDataSnake = rs.getInt("VOTES");

        }else if(currentId == 5){

            voteDataNone = rs.getInt("VOTES");

        }
    }
...