Ich habe eine Java-App mit einer SQL-Datenbank mit preparedStatement, um Zeilen in die Datenbank einzufügen. Ich möchte, dass das Programm Zeilen basierend auf der Seriennummer aktualisieren kann (einmalig).Update SQL-Datenbank mit PreparedStatement in Java
Connection conn = null;
Statement st = null;
try {
conn = DriverManager.getConnection ("jdbc:derby://localhost:1527/db01", "Administrator", "admin"); //run procedure getConnection to connect to the database - see below
st = conn.createStatement(); //set up a statement st to enable you to send SQL statements to the database.
} catch (SQLException ex) {
Logger.getLogger(FormTwo1.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println ("Successful Connection");
...
String query = "insert into TB01(SERIAL,BLADETYPE,STARTT1,AIRT1,FOAMT1,SCT1,FINISHT1) values (?, ?, ?, ?, ?, ?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(query)) {
pstmt.setString(1, bladeSerial);
pstmt.setString(2, itemText);
pstmt.setString(3, String.valueOf(startTime1));
pstmt.setString(4, String.valueOf(airTime1));
pstmt.setString(5, String.valueOf(foamTime1));
pstmt.setString(6, String.valueOf(scTime1));
pstmt.setString(7, String.valueOf(finishTime1));
pstmt.executeUpdate();
} catch (SQLException ex) {
// Exception handling
Logger.getLogger(FormTwo1.class.getName()).log(Level.SEVERE, null, ex);
}
Wo seriell, sind bladetype VARCHAR und startT1, foamTime1, scTime1 & finishTime1 werden alle Variablen Localtime (daher der String.valueOf für die Formatierung).
Die Datenbank DB01 ist, ist die Tabelle TB01
ich das Programm will die Datensätze abhängig von einfügen/aktualisieren, ob die Seriennummer ist bereits in der db.
Was ist Ihre Frage? Wenn Sie Zeilen aktualisieren möchten, müssen Sie eine Anweisung 'UPDATE' und keine Anweisung 'INSERT' verwenden. Außerdem: Die Art, wie Sie es verwenden, 'TB01' ist eine _table_ keine" Datenbank ". –
Entschuldigung, ich möchte, dass der Code ein Update einfügt, wenn es eine eindeutige Seriennummer ist, oder eine Zeile in der Datenbank aktualisieren, wenn sie bereits eingegeben wurde. Sie sind richtig, TB01 ist die Tabelle und DB01 ist die Datenbank. – Will
In Derby können Sie dafür eine ['MERGE'] (https://db.apache.org/derby/docs/10.11/ref/rrefsqljmerge.html) Anweisung verwenden. Nicht verwandt, aber: Sie sollten Zahlen und Daten ** niemals als Strings weitergeben. ** Immer ** Verwenden Sie den entsprechenden Datentyp. Verwenden Sie 'setInt()' für Ganzzahlen, 'setDate()' für Daten, 'setTimestamp()' für Zeitstempel usw. –