Modifier tableau sql avec java

Utilisateur anonyme - Modifié le 1 avril 2023 à 19:10
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 - 2 avril 2023 à 11:16

bonjour a tous

j'ai un interface avec un tableau de patient et je veut modifier des patients,

j'ai rencontré un problème avec la requete update car j'ai na pas pu enregistrer la cin initiale du patient voici le code:

  table.getSelectionModel().addListSelectionListener((ListSelectionListener) new ListSelectionListener(){ 
		            @Override
		            public void valueChanged(ListSelectionEvent e) {
		                  int i = table.getSelectedRow();
		                  initcin=Integer.valueOf((String) model.getValueAt(i, 0));
		                  text1.setText((String)model.getValueAt(i, 0));
		                  text2.setText((String)model.getValueAt(i, 1));
		                  text3.setText((String)model.getValueAt(i, 2));
		                  text4.setText((String)model.getValueAt(i, 3));
		                  text5.setText((String)model.getValueAt(i, 4));
		                  text6.setText((String)model.getValueAt(i, 5));
		              
		            }
		          });
		
		        updateButton.addActionListener(new ActionListener() {
		            @Override
		            public void actionPerformed(ActionEvent e) {
		               //Mettre à jour le formulaire
		               int i = table.getSelectedRow();
		               model.setValueAt(text1.getText(), i, 0);
		               model.setValueAt(text2.getText(), i, 1);
		               model.setValueAt(text3.getText(), i, 2);
		               model.setValueAt(text4.getText(), i, 3);
		               model.setValueAt(text5.getText(), i, 4);
		               model.setValueAt(text6.getText(), i, 5);
		               
		               
		               try {
			            	  String req ="UPDATE Patient set cin=?,nom=?,prenom=?,adresse=?,age=?,tel=? where cin='"+initcin+"'";
			            	  Connection con1 = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","ffff");
			            	  PreparedStatement statement = con1.prepareStatement(req);
			            	  statement.setInt(1,Integer.valueOf(text1.getText()));
			            	  statement.setString(2,text2.getText());
			            	  statement.setString(3,text3.getText());
			            	  statement.setString(4,text4.getText());
			            	  statement.setInt(5,Integer.valueOf(text5.getText()));
			            	  statement.setString(6,text6.getText());
			            	  
							statement.executeUpdate();
						} catch (SQLException e1) {
							
							e1.printStackTrace();
						}

ici, la récupération de la cin initiale est fausse quelqu'un peut m'aider sil vous plait?

merci d'avance

1 réponse

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 127
2 avril 2023 à 11:16

Bonjour,

Modifier un patient, cela signifie d'une part que le patient existe et d'autre part que les modifications font que cela reste le même patient. 

Or quand tu dis "j'ai na pas pu enregistrer la cin initiale du patient", ça me laisse à penser que peut-être tu es plutôt sur une création que sur une modification.
Et quand je vois ta requête je me dis que si ton patient tu lui changes son nom, son prénom, son âge et même son numéro de carte d'identité et bien c'est que ce n'est plus du tout la même personne.

Quand tu construis ta base de données, il faut se poser la question : qu'est-ce qui définit un patient ?
En France par exemple, le numéro de sécurité sociale est un identifiant unique et définitif, on peut donc construire la BDD autour de cet identifiant, un patient pourra changer de nom, de prénom ou même de sexe, mais il ne pourra jamais changer de numéro de sécurité sociale.

Dans ton cas, cet identifiant pourrait être le numéro de carte d'identité (même s'il est peut-être amené à changer en cas de renouvellement de la carte ?) ou un identifiant technique "id" qui correspondrait à un numéro de patient, unique et définitif dans ta base de données.

Une fois que tu choisis quelle donnée définit ton patient, tu peux tout changer sur ton patient, sauf ce qui le définit.

Tu devrais donc avoir une requête de mise à jour comme ceci (où tu ne fais pas de SET sur le même champs que ton WHERE)

UPDATE Patient SET cin=?,nom=?,prenom=?,adresse=?,age=?,tel=? WHERE id=?;

0
Rejoignez-nous