Pssal hned v úvodním emailu, že getGeneratedKeys() mu hází vyjímku, a hlavně getGeneratedKeys() funguje jenom když DatabaseMetaData.supportsGetGeneratedKeys() vrací true, což bohužel není případ PostgreSQL.
Makub
Karel Zacek napsal(a):
> Ahoj
>
> Vygenerovana id by melo jit ziskat pomoci metody
> PreparedStatement.getGeneratedKeys(), ale asi to nepujde pro celou davku.
>
> karel
>
> Martin Kuba wrote:
>> 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
