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: ma...@ics.muni.cz
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem