Bonjour, je rencontre le problème suivant :
J'ai une base de données PostgreSQL parfaitement fonctionnelle. Il s'agit d'une base de disques qui a pour clé primaire listing_id, de type INTEGER.
Dans mon programme de gestion en JAVA, il est possible de remplir un formulaire, puis d'insérer les nouvelles données dans la base. Or cela ne fonctionne pas pour la clé primaire (que je ne renseigne pas dans le formulaire, le programme la calcule), qui dans le programme JAVA est de type int. Je suis certain que c'est un petit détail tout bête, mais je bloque dessus.
Voici le code concerné :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
		Statement state = conn.createStatement();
		ResultSet rs = state.executeQuery("select count(*) from disques");
		//String queryTest="insert into disques (listing_id, artist, title, label) values (999, 'Genesis', 'Foxtrot', 'indé')"; Test d'insertion avec ID prédéfini, fonctionne
		//state.executeQuery(queryTest);
		//ResultSet rs = state.executeQuery(queryTest);
		rs.next();
	        int count = rs.getInt(1); //ici on obtient la dernière valeur de clé primaire, en l'occurrence 976, puisque la base comporte au départ 976 entrées
	       //System.out.println(count + "  résultats trouvés.");
 
		System.out.println("Count vaut : "+count);	// je vérifie, j'ai bien 976 comme résultat	    	
 
 
 
	//System.out.println("Numéro d'ID : "+id);
	//System.out.println("ID :"+count +" Artiste : "+champArtiste + " Titre : "+champTitre + " Label : "+champEditeur);
 
	// test insertion
 
	//stm.executeQuery(queryTest);
  // insertion des valeurs du formulaire
	count++; //pour augmenter la valeur de la nouvelle clé primaire de 1, et obtenir donc 977, pas de problème à ce niveau
 
    int id = Integer.valueOf(count);
 
	String queryInsertion="INSERT INTO disques (listing_id,artist, title, label) values ('Integer.valueOf(count)', 'champArtiste', 'champTitre', 'champEditeur')";
                    //alternative
  	//String queryInsertion="INSERT INTO disques (listing_id,artist, title, label) values ('count', 'champArtiste', 'champTitre', 'champEditeur')";	
	Statement state2 = conn.createStatement();
  System.out.println("IDCount = "+count);
  state2.executeQuery(queryInsertion); //et c'est là que ça m... avec la clé primaire, que j'utilise count ou Integer.valueOf(count);
Et le message d'erreur :
ERREUR: syntaxe en entrée invalide pour le type integer : « Integer.valueOf(count) »
HELP ! Quel type de données dois-je utiliser ? Merci pour vos réponses