Index de colonne non valide
Bonjour,
Je me prends la tête depuis ce matin.
J'ai une servlet qui appelle une fonction qui exécute une requête SQL SELECT , mais j'ai une erreur "Index de colonne non valide".
Je ne comprends pas, le nom de la colonne que je vise est bonne...
Voici le code du Select :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| public static Vector<Motrice> readMot (Connection conn, String mot) throws SQLException
{
Vector<Motrice> readMot = new Vector <Motrice>();
try
{
System.out.println(mot);
pstateMot = conn.prepareStatement("SELECT * FROM MOTRICE WHERE MOT_ID like '?' ");
pstateMot.setString(1, mot);
rsMot = pstateMot.executeQuery();
}
catch(SQLException sqlE)
{
System.out.println("SQL ERREUR : " + sqlE.getMessage());
if( rsMot != null ) rsMot.close();
if( pstateMot != null ) pstateMot.close();
return null;
}
catch(Exception e)
{
System.out.println("ERREUR : " + e.getMessage());
if( rsMot != null ) rsMot.close();
if( pstateMot != null ) pstateMot.close();
return null;
}
try
{
Motrice req = null;
while ( rsMot.next() )
{
req = new Motrice();
req.setMOT_ID(rsPass.getString("MOT_ID"));
req.setMOT_LABEL(rsPass.getString("MOT_LABEL"));
req.setMOT_RFID(rsPass.getString("MOT_RFID"));
req.setMOT_LONGUEUR(rsPass.getInt("MOT_LONGUEUR"));
readMot.add( req );
}
rsMot.close();
pstateMot.close();
}
catch(Exception e)
{
System.out.println( "Exception " + e.getMessage() );
if( rsMot != null ) rsMot.close();
if( pstateMot != null ) pstateMot.close();
return null;
}
return readMot;
} |
et la table en question :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| CREATE TABLE "TRAIN"."MOTRICE"
( "MOT_ID" VARCHAR2(20 BYTE),
"MOT_LABEL" VARCHAR2(20 BYTE),
"MOT_RFID" VARCHAR2(20 BYTE),
"MOT_LONGUEUR" NUMBER
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255
NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
REM INSERTING into SYSTEM.MOTRICE
SET DEFINE OFF;
Insert into SYSTEM.MOTRICE (MOT_ID,MOT_LABEL,MOT_RFID,MOT_LONGUEUR) values ('MOT1','MOTRICE1','221225174118','200');
Insert into SYSTEM.MOTRICE (MOT_ID,MOT_LABEL,MOT_RFID,MOT_LONGUEUR) values ('MOT2','MOTRICE2','124578992653','350'); |
La fonction "readMot" à pour paramêtre la connection (qui est bonne) et un String "mot" qui reçoit comme valeur "MOT1" ou "MOT2" de la part de la servlet. Les valeurs arrivent bien dans la fonction, j’ai vérifié avec un System.out.print() juste avant le prepareStatement.
Voyez-vous d’où peut venir l'erreur ??