Accueil > Forum > > > > Eviter redondance des données pendant un INSERT
Eviter redondance des données pendant un INSERT
vendredi 29 août 2008 à 11:04:00 |
Eviter redondance des données pendant un INSERT

issousam
|
Bonjour,
je voudrais savoir comment eviter la redondance de données dans ma table lors d'INSERT. J'ai essayé en definissant une contrainte d'unicité UNIQUE sur le champ mais le problème est que dés qu'il veut inserer une données qui existe déjà -> il ne le fait pas (jusque là TOUT VA BIEN) mais le problème est qu'il arrete l'instruction et donc arrete d'inserer la suite des données.
Voila le code :
if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LOGICIEL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) BEGIN CREATE TABLE [dbo].[LOGICIEL] ( [id_logiciel] [int] IDENTITY (1, 1) NOT NULL , [nom_logiciel] [text] NOT NULL UNIQUE, [is_os] [text] NOT NULL, ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] END GO ALTER TABLE [dbo].[LOGICIEL] WITH NOCHECK ADD CONSTRAINT [PK_LOGICIEL] PRIMARY KEY CLUSTERED ( [id_logiciel] ) ON [PRIMARY] et le code permettant de me connecter à la base de données (fichier .cs)
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectString"].ToString())) { SqlCommand cmd; string maRequete; maRequete = "INSERT INTO dbo.LOGICIEL(nom_logiciel,is_os) VALUES (@BDD_newL,'"+BDD_os+"')"; cmd = new SqlCommand(maRequete,cn); cmd.Parameters.Add(new SqlParameter("@BDD_newL", SqlDbType.VarChar, 512)); cmd.Parameters["@BDD_newL"].Value = BDD_newL; cn.Open(); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); }
Voila !!!
L'erreur que j'obtiens est : Violation de la contrainte UNIQUE KEY 'UQ_LOGICIEL_4119A21D' Impossible d'inserer une cle en double dans l'objet 'dbo.LOGICIEL'. L'instruction a été arrété
SI vous avez une idée, Merci de me repondre !!!
|
|
dimanche 31 août 2008 à 22:20:20 |
Re : Eviter redondance des données pendant un INSERT

nhervagault
|
Salut,
Il faut utiliser un bloc try catch autour de ton insertion.
Et dans le catch, tu geres ton cas d'erreur, log fichier, log IHM autre corrections des donnees (pour supprimer l'unicité)
Voila
|
|
mercredi 3 septembre 2008 à 14:43:55 |
Re : Eviter redondance des données pendant un INSERT

issousam
|
merci de ta reponse,
On m'en a parlé... mais etant nouveau en programmation et SQL je voudrais savoir si tu pouvais me donner un petit exemple de cette facon de faire:
Ma fonction de connexion est de la forme :
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectString"].ToString())) { SqlCommand cmd; string maRequete; maRequete = "INSERT INTO dbo.LOGICIEL(nom_logiciel,is_os) VALUES (@BDD_newL,'"+BDD_os+"')"; cmd = new SqlCommand(maRequete,cn); cmd.Parameters.Add(new SqlParameter("@BDD_newL", SqlDbType.VarChar, 512)); cmd.Parameters["@BDD_newL"].Value = BDD_newL; cn.Open(); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); }
MAis je vois pas où mettre le try catch
Je pensais à mettre le try avant le INSERT mais je ne sais pas quoi mettre dans le catch
Desolé de poser des questions comme ça mais j'apprends...
MERCI d 'avance
|
|
mercredi 3 septembre 2008 à 15:14:10 |
Re : Eviter redondance des données pendant un INSERT

nhervagault
|
Voici une proposition non testée
using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectString"]. ConnectionString )) { SqlCommand cmd; string maRequete; maRequete = "INSERT INTO dbo.LOGICIEL(nom_logiciel,is_os) VALUES (@BDD_newL,@ BDD_o )";
cmd = new SqlCommand(maRequete,cn); cmd.Parameters.Add(new SqlParameter("@BDD_newL", SqlDbType.VarChar, 512)); cmd.Parameters["@BDD_newL"].Value = BDD_newL; cmd.Parameters[" @BDD_o "].Value = BDD_o ; try{ cn.Open();
long lastID = Convert.ToInt64(cmd.ExecuteScalar()); --> Renvoie l'id inserer - exemple insertion ou cmd.ExecuteNonQuery(); --> Execution exemple suppression et mise a jour } catch{Exception e) { ---> Traitement de l'erreur exemple cle en double .... } finally { if (cmd != null) {cmd.CloseConnection();} } }
|
|
Cette discussion est classée dans : données, logiciel, id, cmd, dbo
Répondre à ce message
Sujets en rapport avec ce message
DEFINIR UNE CONTRAINTE D'UNICITE [ par issousam ]
Bonjour,Je m'adresse à vous car je debute en langage SQL et j'ai un probleme au niveau des contarintes d'unicité que je veux definir au sein des table
MySQL à distance -> Logiciel/serveur [ par Bixome ]
Bonsoir, J'ai rencontrer un problème quand j'ai voulu utiliser la BDD de mon hébergeur (1&1) pour récupérer des données d'une application que je dével
Inserer des données [ par JALEO WAHRANI ]
Bonjour à tous,je souhaiterais inserer des données dans 2 tables à la fois.On a d'un côté la table t_personnes(id, nom, prenom, no_insee)et de l'a
Requête tri par date [ par coyote_fx ]
Bonjour à tous,voilà je dois composer une requête dynamique de recherche sur une table de ma base de données (COMMANDES):Exemple de syntaxe de ma requ
Ob de requete avec IN [ par boninou ]
Bonjour à tous,Voila mon probleme : je souhatiterai effacer de ma base de données tous les paniers qui n'ont pas été validés par les clients.Voila ma
MySQL peu performant? [ par PatBlarg ]
Bonjour, j'ai installé récemment MySQL sur mon ordinateur pour faire du développement de logiciel. Mon logiciel doit absolument fonctionné avec des ba
extraire des données depuis la base de donnée Mysql [ par reseau210 ]
salut à tous,en fait je travaille avec eclipse et la bd mysql, mon problème est que je n'arrive pas à extraire des données à partir de la base de donn
Probleme export de données sql vers excel [ par tshikas ]
Bonjour, voila j arrive pas a executer mon code, Ma connexion fonctionne mais c est au moment d'importer les données pour les enregistrer . Ca me donn
Livres en rapport
|
Derniers Blogs
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLETECHDAYS PARIS 2012 : SYSTEM CENTER SERVICE MANAGER 2012 VUE D'ENSEMBLE par ROMELARD Fabrice
Speakers: Julien Marechal, Gautier Confiant, Sébastien MEYER La session débute par le positionnement de la solution System Center par rapport aux concepts d'organisation ITIL. Le portail du catalogue de se...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : PLEINIèRE SECOND JOURTECHDAYS PARIS 2012 : PLEINIèRE SECOND JOUR par ROMELARD Fabrice
Après une première journée dédiée aux développeurs, cette seconde journée est dédiée au monde des entreprises et de ses applications. Ainsi, cette pleinière est dédiée à faire un 360 de l'évolution des applications Business aux demandes ac...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice TECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVéTECHDAYS PARIS 2012 : RETOUR D'EXPéRIENCE SUR LA MISE EN PLACE D'UN CLOUD PRIVé par ROMELARD Fabrice
Speaker : Guillaume Rochette Cette session est dédiée à fournir le retour sur la mise en place d'un cloud privé (IaaS) par Osiatis pour son compte ou celui de ses clients. Ce projet s'est déroulé sur 4 mois et a permis de faire évoluer...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|