Index de colonne non valide

Signaler
Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019
-
Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019
-
Salut les gars,
lorsque je lance ma requête sql, j'obtiens cette exception: Index de colonne non valide.
Mon code est le suivant:

Connection conn =null;
Class.forName("oracle.jdbc.OracleDriver")
conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.60:1521:devl", "biotech", "ops2010");
System.out.println("Connexion base de données");

String location = "D:\\OPS\\MegaMatcher\\imageproj1.jpg";
File file = new File(location);
FileInputStream image = new FileInputStream(file);
String sql = "insert into BIOMETRIE (TEMPLATE,EN_ID) values (?)";
PreparedStatement inst = null;
inst = conn.prepareStatement(sql);
inst.setBinaryStream(1, image, (int)file.length());
inst.setInt(7, 1);
inst.executeUpdate();
System.out.println("Données inserées dans la table BIOMETRIE");

Ma table a 7 champs. le 1er champ est TEMPLATE, le 7ème champ est EN_ID.
A voir également:

2 réponses

Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
18
Bonjour,

Si tu regardes ici

La position du setInt correspond à la position du caractère "?"

Par exemple:
insert into maTable (col1, col2)  values (?,?)

nécessite de passer les valeurs de la façon suivante :
inst.setInt(1, value1);
inst.setString(2, value2);


Ici, ton inst.setInt(7,1) essaie de passer la valeur 1 au caractère ? en position 7 qui n'existe donc pas.
Il faudrait donc que ça soit :

String sql = "insert into BIOMETRIE (TEMPLATE, EN_ID) values (?, ?)"; 
PreparedStatement inst = null; 
inst = conn.prepareStatement(sql); 
inst.setBinaryStream(1, image, (int)file.length()); 
inst.setInt(2, 1); 


Fanny
Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019

Cool HFanny, l'insertion passe. je ne devais pas mettre setInt(7,1) mais setInt(2,1). Au fait il fallait prendre le rang de EN_ID dans la requête sql et non le rang dans la table. Merci