08. september 2008 - 11:15Der er
1 kommentar og 1 løsning
At lagre en Java String i en Oracle Clob
Jeg er ved at bliv sindssyg over Oracle. Hvorfor kunne de ikke bare lave en lang tekst datatype...
Jeg har soegt paa nettet mange steder og fundet mange foreslag, men de virker lidt besvaerlige og omhandler som regel indsaettelse af blot en kolonne nemlig clob'en.
Hvordan kan jeg lave en metode, som laver String om til Clob, naar jeg vil indsaette en hel raekke?
INSERT INTO tabel(navn, nummer, langtekst) VALUES('" + navn + "','" + nummer + "','" + stringToClob(langtekst) + "')
Det maa vaere en ret triviel opgave, da jeg formoder alle, der har skullet arbejde med Oracle har haft brug for dette. Derfor haaber jeg paa en let og elegant loesning.
public class OracleCLOB { public static void main(String[] args) throws Exception { Class.forName("oracle.jdbc.OracleDriver"); Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:arnepc3", "xxxx", "xxxx"); con.setAutoCommit(false); Statement stmt = con.createStatement(); try { stmt.executeUpdate("DROP TABLE lobbo"); } catch (SQLException ex) { // ignore } stmt.executeUpdate("CREATE TABLE lobbo (id INTEGER, txt CLOB, PRIMARY KEY (id))"); con.commit(); stmt.executeUpdate("INSERT INTO lobbo VALUES(1,EMPTY_CLOB())"); ResultSet upd = stmt.executeQuery("SELECT txt FROM lobbo WHERE id=1 FOR UPDATE"); upd.next(); PrintWriter pw = new PrintWriter(((oracle.sql.CLOB)upd.getClob(1)).getCharacterOutputStream()); pw.println("Dette er en meget lang tekst !"); pw.close(); con.commit(); ResultSet rs = stmt.executeQuery("SELECT id,txt FROM lobbo"); while(rs.next()) { int id = rs.getInt(1); Clob c = rs.getClob(2); System.out.println(id + " " + c.getSubString(1L, (int)c.length())); } rs.close(); stmt.executeUpdate("DROP TABLE lobbo"); con.close(); } }
PS: Og skal koden bruge stil noget seriøst så brug parameters !
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.