At 04:14 PM 5/2/2002 +0200, you wrote:
>Salut la liste, je d�couvre en ce moment les joies de Jdbc et consorts et
>j'ai l� un petit bug tr�s bizarre. Dans l'application de mon entreprise, on
>met � jour les donn�es d'une base au moyen de ResultSet et autres objets
>typiques. Dans le cas d'une mise � jour de MySQL, tout va bien. Mais pour
>Oracle, le genre de code ci-dessous foire lamentablement. Disposez-vous
>d'explication convaincantes (ou m�me justes ;) ?
>Merci
>
>Nicolas Delsaux
>PS :; le bout de code qui plante
> private synchronized void insert(ResultSet rs,RecordSet l)
> {
> String[] fields;
> fields = l.getFields();
> if (fields != null)
> {
> try
> { // on se positionne sur la ligne d'insertion
> rs.moveToInsertRow();
> for( int i = 0 ; i < rs.getMetaData().getColumnCount() ;
>i++ ) {
> rs.updateNull(i+1); // initialisation de tous les champs
>� NULL
> }
> for( int i = 0 ; i < fields.length ; i++ )
> {// mise � jour pour les champs envoy�s
> Object tmp = l.getFieldValue(fields[i]);
> if( tmp != null ) {
> rs.updateObject(fields[i],tmp);
> }
> }
> try
> {
> rs.insertRow(); // insertion dans la base de donn�es
> }
> catch(SQLException e)
> {// un pb : on suppose que l'enregistrement existe d�j�
> update(l); // on tente de le mettre � jour
> }
> }
> catch(SQLException e)
> {
> e.printStackTrace();
> }
> }
> }
>
>Et la stack trace de l'exception
>
>java.lang.NullPointerException
>
> at sun.jdbc.odbc.JdbcOdbcBoundCol.setRowValues(JdbcOdbcBoundCol.java:240)
>
> at sun.jdbc.odbc.JdbcOdbcResultSet.updateNull(JdbcOdbcResultSet.java:3044)
>
> at TableScript.insert(TableScript.java:720)
>
>Je pr�cise pour les pointilleux que le ResultSet est cr�� dans la m�thode
>appelante au moyen des lignes
> Statement st = con.createStatement();
> ResultSet rs = st.executeQuery("select * from " + tables[0] + "
>where 1=2");
t'es sur de ton 1=2 ? ca me parait etrange quand meme...
sur des champs de type varchar j'ai eu des soucis entre Postgres et Oracle
pour des valeurs NULL different de valeurs non intialisees!!!
drole de gestion mais c'est comme ca chez oracle..
il nous faudrait un peu plus de details sur ta structure SGBD avant d'aller
dire des betises!!
Jerome