# SQL Befehle ausführen und deren Ergebnisse verarbeiten



## Clip (5. Jul 2006)

Hallo,

Ich habe SQL Befehle die ich an die DB senden möchte. Dabei weiß ich zur Laufzeit nie, ob es sich im selects, updates, Strored Procedures, compute  oder print Anweisungen handelt. 
Mein Problem ist, dass ich nicht weiß, wie ich diese Möglichkeiten programatisch behandeln soll. Z.B. Kann ich select befehle mit 'executeQuery' absetzten, update und insert Befehle hingegen sinf besser mit 'executeUpdate' verarbeitbar. Was ich aber mit Stored Procedures und Print Anweisungen machen soll weiß ich nicht. Zude, gefällt es mir nicht (wirklich garnicht) unterschiedliche Methoden zum Ausführen eines Befehles benutzen zu sollen. Benutze ich aber einfach die 'execute' Methode, weiß ich nicht woher ich wissen soll ob ich ein ResultSet oder einen String zurückgeliefert bekomme. Oder nichts im Falle eines update oder insert Befehles. 

Ich habe ein Programm in dem der Benutzer Komadozeilen basiert SQL Befehle absetzten kann und deren Ergebnisse angezeigt bekommt.

Danke!


----------



## Leroy42 (5. Jul 2006)

Welche Befehle Queries sind und welche Actions ist doch
in SQL definiert.

Scan doch einfach den eingegebenen SQL-Befehl und mach'
eine Fallunterscheidung entsprechend des Befehls.


----------



## Clip (5. Jul 2006)

In diesem Fall kann ich aber keine Stored Procedures erkennen. Weil die können ja evtl. immer anders heissen.
Zudem bekomme ich auch keine Print und compute Befehlsresultate geliefert.


----------



## Clip (6. Jul 2006)

Ichhabe jetzt:

```
private void processInput(String command) throws SQLException {
        Statement stm = connection.getConnection().createStatement();

        // Kopfgesteuerte Scheilfe ausführen solange stm.getMoreResults() = true
        // ist.
        do {
            // ResultSet rs = stm.executeQuery(command);
            stm.execute(command);
            int rowcount = stm.getUpdateCount();
            if (rowcount == -1) {
                ResultSet rs = stm.getResultSet();
                if (rs != null)
                    drawDataGrid(rs);
            } else {
                stm.getMoreResults();
                ResultSet rs = stm.getResultSet();
                if (rs != null)
                    drawDataGrid(rs);
                else{
                    System.out.println(getRowsAffectedString(rowcount));
                }
            }
        } while (stm.getMoreResults());
    }
```

damit kann ich fast jedes Ergebnis anzeigen lassen. nur leider bekomme ich nach wie vor keine Print anweisungen geliefert. weiss jemand wie ich das hinbekommen kann?
danke!


----------

