JDBC PreparedStatement a navrat primary key
Martin Kuba
makub na ics.muni.cz
Úterý Květen 26 11:06:27 CEST 2009
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: makub na ics.muni.cz
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------
------------- další část ---------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3292 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://amaio.cz/pipermail/konference/attachments/20090526/db890bca/attachment.bin>
Další informace o konferenci Konference