Avatar billede stigc Nybegynder
14. maj 2003 - 15:51 Der er 9 kommentarer og
1 løsning

Gemme en Clob værdi fra JAVA med JNDI i Oracle 8i

Jeg sider med et projekt, hvor vi har har kørt med JDBC til en Oracle database. Nu har vi skitet den ud med en JNDI forbindelse.

Det har givet problemer med opdatering af CLOB felter, som ikke bliver opdateret eller indsat. Vi kan sagtens SELECTE værdien ud.

Hvad fanden gør vi galt?


Kode eksempel:

 
          conn.setAutoCommit(false);
         
        sql = "UPDATE X";
        sql += " SET value=empty_clob()";
        stmt = conn.createStatement();
        stmt.execute(sql);

       
        sql = "SELECT value FROM X";
        sql += " for update";
        stmt = conn.createStatement();
        stmt.executeQuery(sql);
        rs = stmt.getResultSet();
       
        while (rs.next())
        {

            sql = "UPDATE X";
            sql += " SET value = ? ";
            java.sql.Clob myClob = rs.getClob("VALUE");
            updateClob(conn, sql, myClob, strSubmitedText);
            conn.commit();
            conn.setAutoCommit(true);
        }
Avatar billede arne_v Ekspert
14. maj 2003 - 19:08 #1
Bare lige for at checke om jeg har forstået det rigtigt.

* I har noget JDBC kode som opdaterer en CLOB
* når I henter Connection med DriverManager.getConnection virker koden
* når I slår en DataSource op i JNDI og henter Connection fra den så
  virker koden ikke

korrekt forstået ?

Bruger I 9iAS som server ?
Avatar billede arne_v Ekspert
14. maj 2003 - 19:09 #2
Der er ihvertfald en ting i koden som ser meget mystisk ud:

conn.setAutoCommit(false);
...       
while (rs.next())
{
    ...
    conn.commit();
    conn.setAutoCommit(true);
}

skal autocommit ikke først sæåes til efter løkken ??
Avatar billede stigc Nybegynder
15. maj 2003 - 09:30 #3
Jo det bør slås til efter. Det har dog ingen betydning, jeg har kun en række. Oracle databasen ligger på en computer, mens webserveren kører weblogic 8.1.

Her henter vi conn fra JNDI.

public Connection getConnectionFromJNDI(Connection conn){
        if (conn == null){
            //Connection tmpConn = null;
            try{
                Context initCtx = new InitialContext();
                datasource = (DataSource) initCtx.lookup("examples-dataSource-oracleXAPool");
                conn = datasource.getConnection();
            }
            catch(Exception e){}
        } 
        return conn;
        //return tmpConn;
    }
Avatar billede arne_v Ekspert
15. maj 2003 - 09:50 #4
OK - WebLogic.

Er det mig der husker forkert eller kommer WebLogic selv med JDBC drivere
til bl.a. Oracle ?

Hvis jeg husker rigtigt, så kunne man jo forestille sig at:
  - DriverManager.getConnection connection bruger en JDBC driver fra Oracle
  - JNDI lookup DataSource connection fra connection pool bruger
    en JDBC driver fra BEA

Det løser jo ikke problemet men kan forklare hvorfor der er forskel.

Og hvis hypotesen var korrekt, så var det måske en ide at checke
hos BEA efter opdateringer til deres Oracle JDBC driver.

Det er ren gætværk. Men problemets karakter gør det jo svært at
sige noget med absolut sikkerhed.
Avatar billede fcs Novice
18. maj 2003 - 16:05 #5
Stigc>> Du har mange uafsluttede spørgsmål herinde. Der er mange folk der har forsøgt at hjælpe dig. De fortjener enten at få nogle point for deres ulejlighed eller at du i det mindste reagerer og forklarer yderligere for at I kan få løst problemet. Det er ihvertfald uacceptabelt at have så mange point ude. Du bedes rette op på dette ved at lukke dine mangle gamle spørgsmål indenfor 5 dage. Sker dette ikke, vil din brugers status her på eksperten blive taget op til overvejelse.

FCS/Coadmin
Avatar billede stigc Nybegynder
02. juni 2003 - 22:07 #6
Hvis du lægger et svar, kan jeg give dig nogen point for dit besvær:)
Avatar billede arne_v Ekspert
02. juni 2003 - 22:20 #7
svar
Avatar billede arne_v Ekspert
02. juni 2003 - 22:21 #8
svar
Avatar billede arne_v Ekspert
02. juni 2003 - 22:21 #9
Men er du kommet videre med problemet ?

Har du fået checket de drivere ?
Avatar billede stigc Nybegynder
03. juni 2003 - 21:44 #10
Næ, vi nåede ikke at kigge det igennem. Men jeg tror din tanke er god nok. Vi lavede en hurtig løsning med tekstfiler i stedet for..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester