From: "Rodolphe Godreul" <rodolphe@godreul.com>
To: <java@u-strasbg.fr>
Subject: BLOB Oracle
Date sent: Fri, 14 Sep 2001 17:45:53 +0200
Send reply to: java@u-strasbg.fr
hello la liste !
J ai une appli qui cause avec une BdD par JDBC.
Ca marchait bien avec MS SQL Server (Driver i-net Opta).
J essaye de la faire marcher avec Oracle en utilisant le Thin Driver
fourni par Oracle. et ca marche plus.... j ai un champ de type BLOB dans
la base et je passe un byte[] au PreparedStatement. avec un petit tableau,
pas de probleme mais des qu il grossit un peu :
java.sql.SQLException: ORA-01461: can bind a LONG value only for insert
into a LONG column
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:822)
at
oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:14
46 )
at
oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:137
1)
at
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.ja
va :1900)
at
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedSta
te ment.java:363)
at
oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement
.j ava:407)
voila, donc si quelqu un a deja travaille avec les BLOBs Oracle et a une
idee je suis preneur...
Nota: je n ai pas moyen de modifier la BdD,
mon code doit continuer a marcher avec SQLServer,
et je souhaiterais garder le code generique (j utilise la methode
PreparedStatement.setObject())
Date sent: Mon, 17 Sep 2001 08:44:49 +0200
From: Jerome Moliere <moliere@viveo-montpellier.com>
To: java@u-strasbg.fr
Subject: Re: BLOB Oracle
Send reply to: java@u-strasbg.fr
Rodolphe Godreul wrote:
>hello la liste !
>
>J ai une appli qui cause avec une BdD par JDBC.
>Ca marchait bien avec MS SQL Server (Driver i-net Opta).
>J essaye de la faire marcher avec Oracle en utilisant le Thin Driver
>fourni par Oracle. et ca marche plus....
>
normal, je suis tombe sur un probleme similaire il y a peu, le probleme
vient du fait (du moins pour moi car je ne connais pas ta version
d'Oracle) que les BLOBS sont mal gérés (donc pas gérés) dans la version
thin du driver Oracle 8.1.7.X (j'ai une R3).
>
>j ai un champ de type BLOB dans la base et je passe un byte[] au
>PreparedStatement.
>avec un petit tableau, pas de probleme mais des qu il grossit un peu :
>
>java.sql.SQLException: ORA-01461: can bind a LONG value only for insert
>into a LONG column
>
a priori c'est la bonne methode...
>
>voila, donc si quelqu un a deja travaille avec les BLOBs Oracle et a une
>idee je suis preneur...
>
>
j'espere que ca te depanne, donc 2 solutions:
- installer le driver OCI (requiert le client Oracle)
- ne pas utiliser un BLOB mais un LONG RAW (c'est ce que j'ai fait sans
souci ici)
Jerome