Wie bekommt man mehrere Resultsets aus einer einzelnen CallableStatement?
Wenn ich rufen Sie die gespeicherte Prozedur von der Kommandozeile aus, bekomme ich die folgende.
CALL `events`.`get_event_by_id`(10)
+---------+----------+-------------+---------------------+---------------------+---------------------+--------+----------+
| evet_id | name | description | starttime | endtime | last_modified | active | addre_id |
+---------+----------+-------------+---------------------+---------------------+---------------------+--------+----------+
| 10 | samole 3 | sanely | 2013-11-27 17:37:00 | 2013-11-27 18:09:00 | 2013-11-27 09:37:42 | 1 | 20 |
+---------+----------+-------------+---------------------+---------------------+---------------------+--------+----------+
1 row in set (0.00 sec)
+---------+------------+---------+
| user_id | username | picture |
+---------+------------+---------+
| 1 | jamess2000 | NULL |
| 2 | yferna2012 | NULL |
+---------+------------+---------+
2 rows in set (0.00 sec)
+----------+------------------------------+---------------------+-------------+--------+
| addre_id | street | name | description | active |
+----------+------------------------------+---------------------+-------------+--------+
| 20 | Schieffelin | Manhattan Ville Loc | NULL | 1 |
+----------+------------------------------+---------------------+-------------+--------+
Hier ist ein Ausschnitt von meinem Java-Code
String SP_GET_EVENT_BY_ID = "CALL `events`.`get_event_by_id`(?)";
String PROC_PARAM_EVENT_ID = "evet_id";
mCallableStatement = mConnection.prepareCall(SP_GET_EVENT_BY_ID);
mCallableStatement.setInt(10, PROC_PARAM_EVENT_ID);
Wenn ich die Anweisung ausführen, nur die event_table Ergebnisse zurückgegeben werden.
Ich lese die Abfrage mit den folgenden:
ResultSet reader = mCallableStatement.executeQuery();
while(reader.next())
{
//etc..... here i assign db values to properties.
}
Ich versuche zu vermeiden, dass mehrere Anfrage an die Datenbank, da es extrem langsam (300 ms je nachdem, wie viele Ergebnisse)
Ist es überhaupt möglich?
InformationsquelleAutor James | 2013-11-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich diesen tollen Artikel. http://www.herongyang.com/JDBC/MySQL-CallableStatement-Multiple-ResulSet.html
Hier ist der code von diesem Artikel.
InformationsquelleAutor James
Laut Javadocs für - Anweisung.getMoreResults(), sollten Sie auch überprüfen, dass
getUpdateCount() != -1
wenn man für mehr Ergebnis-sets.Dieser code funktioniert für Sybase-und wahrscheinlich viele andere Datenbanken außer Oracle:
https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getMoreResults()
InformationsquelleAutor splashout
InformationsquelleAutor Indunil Girihagama