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