Lectura de un campo de datos específico fuera de la base de datos en Java

Algún contexto primero:

Parte 1: obtengo todos los valores de la columna VOTESen la tablaSURVEYRESULTS

Parte 2: Cada vez que vote por un animal específico, addVote()se activará con su parámetro específico Sé qué animal necesita un voto adicional. Entonces, lo que hago a continuación es agregar 1 voto a ese animal.

Por alguna razón sucede lo siguiente:

Digamos que todos los animales tienen 0 votos en mi base de datos. Luego voto por "Perro". "Perro" entonces tiene 1 voto. Luego voto de nuevo por "Perro", "Perro" no tendrá 2 votos, pero aún así 1 voto.

Entonces parece que el código está funcionando, pero eso se int voteDataDogmantiene en el valor 0. Sin embargo, no veo por qué sería así.

Aquí está mi código :

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

Ejemplo de salida :

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

De hecho, necesito los valores de voto para cada animal.

int voteDataDog;
int voteDataCat; --> needs to become value '1' after Part 1
int voteDataBird;
int voteDataSnake;
int voteDataNone;
Respuesta 1
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");
    }

Aquí está asignando el mismo valor a cada variable.

Ejecuta la consulta "Seleccionar votos ...". Digamos que la primera fila devuelve 3. Ahora el conjunto de resultados asignará 3 a voteDataDog, Cat, etc. Ahora el conjunto de resultados va a la siguiente fila que tiene un valor de 0, ahora asigna 0 a cada animal.

Haga una consulta diferente para cada animal. Algo así como "seleccionar votos de los resultados de la encuesta donde id = 1" para perros y así sucesivamente para cada animal.

Respuesta: 2

Este es un ejemplo simplificado: tengo dos hilos: ¿Puede JavaME y / Proguard reordenar las declaraciones obX = ..., de modo que thread_B tenga una excepción de puntero nulo en ob1.someMethod? thread_A: ...

Estoy trabajando en una aplicación grande que tiene diferentes condiciones (ifs) y diferentes métodos asociados con ella. Sugiera una forma de optimizar el código mencionado a continuación (reduzca la cantidad de ifs anidados como ...

Recibo una excepción de puntero nulo antes de que pueda acceder a mi código. No puedo decir si funcionará correctamente porque no puedo hacer que pase este punto. El error se arroja en esta línea: if (...

Suponga que estoy ejecutando un proceso y quiero redirigir sus secuencias mediante la técnica clásica: ProcessBuilder pb = new ProcessBuilder ("C: /folder/script.bat"); Proceso p = pb.start (); ...