Index de colonne non valide

Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019
- - Dernière réponse : Armelkev
Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019
- 18 juin 2010 à 19:01
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.
Afficher la suite 

2 réponses

Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
16
0
Merci
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
Commenter la réponse de HFanny
Messages postés
101
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2019
0
Merci
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
Commenter la réponse de Armelkev