executeQuery & executeBatch

savvo

Mitglied
Hallo

Ich versuche eine Applikation zu schreiben die Daten aus einer Datenbank auslesen kann. Nun soweit habe ich es geschaft, jedoch wollte ich ebenfalls die SQL - Befehle wie INSERT, UPDATE, DELETE brauchen können, dies geht nicht. Meine Query's werden in eine JTextArea eingegeben, falls es Probleme mit der Syntax gibt wird die SQLException in einem JTextField eingefügt.

Code:
public void buildTable() throws SQLException {
  Statement stmt = Connector.getStatement();
  model = new TableModel(stmt.executeQuery(sqlStmt()));
  table.setEnabled(false);
  table.setModel(model);
  table.updateUI();
  table.setEnabled(true); 
}


sendQuery.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    try {
     buildTable();
     msg.setText("done");
     rowsCount();
    } catch (SQLException e1) {
     msg.setText(e1.toString());
    }
   }
  });

Wollte noch diesen Code nützen können
Code:
stmt.addBatch(sqlStmt());
stmt.executeBatch();

Ich habe zur Zeit keine Ahnung :confused: wo ich diesen Code implementieren muss. Habe zu Testzwecken :suspekt: mal im buildTable() folgendes geändert
Code:
public void buildTable() throws SQLException {
  Statement stmt = Connector.getStatement();
try {
  model = new TableModel(stmt.executeQuery(sqlStmt()));
  table.setEnabled(false);
  table.setModel(model);
  table.updateUI();
  table.setEnabled(true); 
}
catch(SQLException e) {
stmt.addBatch(sqlStmt());
stmt.executeBatch();
}
}
Auf dieser Weise funktioniert es aber mir ist bewusst dass dies nicht eine saubere Lösung ist und die SQLException im JTextfield kann ich so auch nicht brauchen. :(

Kann mir jemand helfen?

Gruss
Savvo
 
Hallo!

Mit addBatch und executeBatch() kann man eine art Stapelverwarbeitung von SQL Statements realsieren. Mit addBatch wird eben ein Kommando auf den Stapel gelegt und mit executeBatch() ausgeführt. Das eignet sich beispielsweise sehr gut für Massendaten Änderungen im Single User Betrieb.

Gruß Tom
 
Hallo Tom

Ja genau, da hab ich das falsche Kommando genommen, muss vermutlich mit executeUpdate() arbeiten.

Hättest du mir eine Idee wie ich dies mittels einer sauberen Lösung implementieren kann?

Gruss
Savvo
 
Zurück