No, hodilo by se v dotazu uvést, o jakou databázi a jaký JDBC driver se jedná. Z toho "returning id" soudím, že je to nejnovější PostgreSQL, protože tohle je jeho specialitka, to není standardní SQL.
Podle popisu metody Statement.executeBatch(), který říká
Returns:
an array of update counts containing one element for each command in the
batch.
soudím, že vygenerované id se takhle získávat nedají. Musí se
v cyklu volat executeQuery(). Nebo, a to bude lepší,
získat ty id předem pomocí volání
select nextval('foo_id_seq')"
a nastavit je do dávky jako parametry, takže nebude nutné
z dávky nic vracet.
Makub
Dusan Zatkovsky napsal(a):
> Ahoj.
>
> Potrebujem do primitivnej tabulky, ktora ma id INTEGER PRIMARY KEY, vlozit
> tisicky zaznamov a ziskat s5 priradene id. Snazim sa na to pouzit
> PreparedStatement ( "insert into foo ( ... ) returning id as integer" ) a
> jeho batch funkcionalitu.
>
> for ( ... ) {
> st.setString(..);
> st.addBatch();
> }
>
> Neviem vsak tie vygenerovane id ziskat, pretoze:
>
> A. st.executeBatch(); // toto hodi SQL ex, ze nebol
> ocakavany result
> ResultSet rs = st.getGeneratedKeys();
>
> B. ResultSet rs = st.executeQuery() // toto vrati len 1
> zaznam
>
> Je vobec tato funkcionalita mozna pomocou batch, alebo musim v tom prvom
> cykle
> vzdy volat executeQuery() v kazdom cykle? Rad by som sa totiz vyhol zbytocnym
> RTT medzi klientom a databazou.
>
> Dik.
>
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Science email: [email protected]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
