D
deasid
Gast
Hallo,
Ich will folgendes programmieren: Der User soll ein Query schreiben und dazu wird die Tabelle angezeigt.
zum Beispiel: SELECT * FROM stermin.
[JAVA=42]
String query= queryArea.getText();
String[] querycode;
querycode=query.split(" ");
ResultSet resultSet=tableModel.getResultSet();
if(querycode[0].equals("DELETE") || querycode[0].equals("UPDATE") || querycode[0].equals("INSERT") || querycode[0].equals("ALTER") ||
querycode[0].equals("CREATE")) {
tableModel.dmlexecute(query, tableModel.getStatement());
}else{
resultSet=tableModel.ddlexecute(query, tableModel.getStatement());
tableModel.setResultSet(resultSet);
}
// Da der Button getätigt wurde, wird die neue Query übernommen.
tableModel.setQuery(query);[/code]
Wenn eine DDL-Anweisung eingegeben wurde (also alles was mit SELECT beginnt), wird die Methode ddlexecute aufgerufen :
ddlexecute:
[JAVA=42]public ResultSet ddlexecute(String query, Statement statement) throws SQLException {
resultSet = statement.executeQuery( query );
// Hier wird gemeldet, dass die Tabelle geändert wurde
// Hier wird die meta Data für resultSet erhalten.
metaData = resultSet.getMetaData();
resultSet.last(); // springt zur letzten Zeile.
numberOfRows = resultSet.getRow();
// in numberOfRows wird gespeichert, in der wievielten Zeile wir sind.
// Hier wird gemeldet, dass die Tabelle geändert wurde.
fireTableStructureChanged();
return resultSet;
}[/code]
wenn eine DML-Anweisung eingegeben wurde, wird die Methode dmlexecute aufgerufen und da ist das Problem:
[JAVA=42]public void dmlexecute(String query, Statement statement) throws SQLException {
statement.executeUpdate( "INSERT INTO sender VALUES ('PROO7', 'PROSIEBENEUDA', NULL);" );
// Hier wird gemeldet, dass die Tabelle geändert wurde.
}[/code]
Wenn eine DML-Anweisung eingegeben wird (Alles was mit UPDATE, DELETE, CREATE,...) wird folgende Fehlermeldung eingegeben: "Can not issue data manipulation statements with executeQuery()."
Also bei den DML-Anweisungen will er auch auf die executeQuery()-Methode zugreifen, obwohl ich die Methode executeUpdate() geschrieben habe.
Bin dankbar für jede Antwort
MfG
Ich will folgendes programmieren: Der User soll ein Query schreiben und dazu wird die Tabelle angezeigt.
zum Beispiel: SELECT * FROM stermin.
[JAVA=42]
String query= queryArea.getText();
String[] querycode;
querycode=query.split(" ");
ResultSet resultSet=tableModel.getResultSet();
if(querycode[0].equals("DELETE") || querycode[0].equals("UPDATE") || querycode[0].equals("INSERT") || querycode[0].equals("ALTER") ||
querycode[0].equals("CREATE")) {
tableModel.dmlexecute(query, tableModel.getStatement());
}else{
resultSet=tableModel.ddlexecute(query, tableModel.getStatement());
tableModel.setResultSet(resultSet);
}
// Da der Button getätigt wurde, wird die neue Query übernommen.
tableModel.setQuery(query);[/code]
Wenn eine DDL-Anweisung eingegeben wurde (also alles was mit SELECT beginnt), wird die Methode ddlexecute aufgerufen :
ddlexecute:
[JAVA=42]public ResultSet ddlexecute(String query, Statement statement) throws SQLException {
resultSet = statement.executeQuery( query );
// Hier wird gemeldet, dass die Tabelle geändert wurde
// Hier wird die meta Data für resultSet erhalten.
metaData = resultSet.getMetaData();
resultSet.last(); // springt zur letzten Zeile.
numberOfRows = resultSet.getRow();
// in numberOfRows wird gespeichert, in der wievielten Zeile wir sind.
// Hier wird gemeldet, dass die Tabelle geändert wurde.
fireTableStructureChanged();
return resultSet;
}[/code]
wenn eine DML-Anweisung eingegeben wurde, wird die Methode dmlexecute aufgerufen und da ist das Problem:
[JAVA=42]public void dmlexecute(String query, Statement statement) throws SQLException {
statement.executeUpdate( "INSERT INTO sender VALUES ('PROO7', 'PROSIEBENEUDA', NULL);" );
// Hier wird gemeldet, dass die Tabelle geändert wurde.
}[/code]
Wenn eine DML-Anweisung eingegeben wird (Alles was mit UPDATE, DELETE, CREATE,...) wird folgende Fehlermeldung eingegeben: "Can not issue data manipulation statements with executeQuery()."
Also bei den DML-Anweisungen will er auch auf die executeQuery()-Methode zugreifen, obwohl ich die Methode executeUpdate() geschrieben habe.
Bin dankbar für jede Antwort
MfG