Salve, ho un problema con l'aggiornamento di un database MySQL attraverso java.
In pratica ho creato un sistema che controlla vari elementi ambientali, come temperatura, umidità, ecc. ed inserisce ogni volta l'ultima rilevazione in un database.
I campi della tabella (si chiama "env_sensors_curr_val") sono:
ID_ESV, intero, chiave primaria, identificativo del dispositivo di rilevamento
ESCV_NAME, char(20) nome del dispositivo (temperatura, ecc.)
ESCV_VAL, char(20) rilevazione del dispositivo
ESCV_DATE, char(20) data della rilevazione
Se la tabella è vuota, non ho problemi, in quanto dopo aver eseguito queste linee
faccio un controllo su rsQuery per vedere se ha elementi oppure no. Se non ce li ha eseguo una INSERT e tutto funziona a meraviglia. Il problema c'è quando cerco di fare una UPDATE. Il codice che ho usato è questo:codice:SQL = "SELECT ID_ESV FROM env_sensors_curr_val"; SQLPreparedStatement = con.prepareStatement(SQL); rsQuery = SQLPreparedStatement.executeQuery();
Il compilatore mi restituisce questo errore:codice:while (rsQuery.next()){ sem = 1; int id = rsQuery.getInt("ID_ESV"); if (id == 1 && array[0].equals("temperatura")){ SQL = "UPDATE env_sensors_curr_val SET ESCV_VAL = ?, ESCV_DATE = ?, WHERE ESCV_NAME = ?"; SQLPreparedStatement = con.prepareStatement(SQL); SQLPreparedStatement.setString(1, array[1]); // contiene il valore rilevato SQLPreparedStatement.setString(2, array[2]); // contiene la data del rilevamento SQLPreparedStatement.setString(3, array[0]); // contiene il nome del dispositivo SQLPreparedStatement.executeUpdate(); SQLPreparedStatement.close(); System.out.println("Temperatura aggiornata!"); } else if (id == 2 && array[0].equals("umidita")){ SQL = "UPDATE env_sensors_curr_val SET ESCV_VAL = ?, ESCV_DATE = ?, WHERE ESCV_NAME = ?"; SQLPreparedStatement = con.prepareStatement(SQL); SQLPreparedStatement.setString(1, array[1]); SQLPreparedStatement.setString(2, array[2]); SQLPreparedStatement.setString(3, array[0]); SQLPreparedStatement.executeUpdate(); SQLPreparedStatement.close(); System.out.println("Umidità aggiornata!"); } }
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorEx ception: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE ESCV_NAME = 'temperatura'' at line 1
Dove sto sbagliando???

Rispondi quotando
