CLOB beszúrás adatbázisba

iszekely at delfin.unideb.hu iszekely at delfin.unideb.hu
2007. Júl. 9., H, 11:54:40 CEST


Sziasztok!

Két elméleti kérdésem lenne JDBC-vel kapcsolatban.

Az első: CLOB típusú oszlopba kell beszúrni adatot. Erre nagyon sok
helyen a következő módszert látni:
1. Beszúrni a sort, de a CLOB értékét az EMPTY_CLOB() függvény
használatával meghagyni NULL-nak.
2. Rögtön ezután egy SELECT ... FOR UPDATE jön, és a lekérdezett CLOB-tól
kérünk egy Writert a clob.setCharacterStream(0) hívással. Ezt a Writert
használva feltöltjük a CLOB mezőt adattal.

Ez az eljárás nekem feleslegesen bonyolultnak tűnik. A CLOB értéket
sikerült egyből, egyetlen INSERT utasítással beszúrni. A
PreparedStatement elkészítésekor a CLOB mező értékét egy
setCharacterStream(int, Reader, int) hívással állítom be. A JDBC meghajtó a
háttérben szépen elvégzi az adatok másolását a Reader-ből a CLOB-ba.

A kérdésem az, hogy van-e valami különösebb oka vagy előnye az
első, sokkal körülményesebb módszer használatának.


A második kérdés szintén az első módszerhez kapcsolódik. A
következő programrészlet szintén nagyon sok helyen megtalálható
(legalábbis nálunk :)):

Object obj = rSet.getObject(i+1);
if (obj instanceof oracle.sql.CLOB) {
	writer = ((oracle.sql.CLOB)obj).getCharacterOutputStream();
}
else if (obj instanceof weblogic.jdbc.common.OracleClob) {
	writer = ((weblogic.jdbc.common.OracleClob)obj).getCharacterOutputStream();
}
else
	throw new SQLException("CLOB objectof type "+obj.getClass()+" is currenly
not supported");
writer.write(clobData[i]);
writer.close();

A kérdés ugyanaz: van-e valami oka vagy előnye ilyen kódnak, amikor
ezzel a kód hordozhatósága nagyban sérül?

Bocsi a hosszú levélért, és előre is köszi a válaszokat.

Stivi


--------------------------------------------------------------------
mail2web.com - Microsoft® Exchange solutions from a leading provider -
http://link.mail2web.com/Business/Exchange




További információk a(z) Javalist levelezőlistáról