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
Transfert de data et DB2 [ par jsmikwen ]
Bonjour, Je suis entrain de chercher un logiciel de transfert / intégration de données capable d'aider avec DB2. Nous avons eu des conseils mais n'
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
Application Web indépendante du serveur de base de données [ par xianSheng ]
Salut tout le mondeje suis nouveau , excusez moi si je ne pose pas ma question là ou il le faut.J'ai une application .net en visual studio 2008 qui ut
Livres en rapport
|
Derniers Blogs
[WF4] GROSSES MéPRISES EN PERSPECTIVE SUR LE KIT DE MIGRATION WF3->WF4[WF4] GROSSES MéPRISES EN PERSPECTIVE SUR LE KIT DE MIGRATION WF3->WF4 par JeremyJeanson
Comme un certain nombre de fanatiques des flux RSS, je suis avec grand intérêt les articles de la team WCF/WF et forcément l'annonce d'hier concernant un kit de migration WF3->WF4 m'a fait chaud au c½ur ;) (pour rappel, mon post au sujet de la migratio...
Cliquez pour lire la suite de l'article par JeremyJeanson RéUNION DU CLUB MOSS PARISRéUNION DU CLUB MOSS PARIS par VANNESTE Xavier
Bonjour à tous la réunion du club moss aura lieu le 15 mars 2010 à 14 heures:
14:00 - 14:05 Paris, EROL GIRAUDY + Gaetan BOUVERET + Nicolas Georgeault intro Présentateur : Pierre Erol GIRAUDY14:05 - 14:30 Paris, Worflow - visio Services - We...
Cliquez pour lire la suite de l'article par VANNESTE Xavier [WF4] ARGUMENT, QUI ES TU?[WF4] ARGUMENT, QUI ES TU? par JeremyJeanson
Quand je parle de Workflows ou d'activités (au passage, il s'agit de la même chose dans WF4 ;) ), je fais souvent la comparaison avec une méthode classique : Une activité peut avoir un retour, comme une méthode. Une activité peut avoir des arguments d'ent...
Cliquez pour lire la suite de l'article par JeremyJeanson [FAST] FORMATIONS GRATUITES EN E-LEARNING[FAST] FORMATIONS GRATUITES EN E-LEARNING par pierre
Bonjour, Quelques formations gratuites sur FAST: Developer Configuring Search UIs Presentation 37 minutes La...
Cliquez pour lire la suite de l'article par pierre MICROSOFT VISUAL STUDIO TEAM EXPLORER 2010 - NOM DE CODE "EAGLESTONE"MICROSOFT VISUAL STUDIO TEAM EXPLORER 2010 - NOM DE CODE "EAGLESTONE" par Etienne Margraff
Ca ne vous dit rien ?
Si vous êtes dans le monde Java et que vous utilisez Team Foundation Server, vous devez certainement connaître voir utiliser le plugin Team Prise. Il permet depuis plusieurs années d'avoir l'équivalent du Team Explorer ...
Cliquez pour lire la suite de l'article par Etienne Margraff
Logiciels
Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor Xlite (v 3.0 build 41150)XLITE (V 3.0 BUILD 41150)c'est un logiciel qui permet de téléphoner par Internet à l'aide d'un compte SIP pratique pour le... Cliquez pour télécharger Xlite Academy System (10.9.3.0)ACADEMY SYSTEM (10.9.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Pacmin (1.1.0)PACMIN (1.1.0)Adaptation du célèbre jeu d'arcade. Incarnez une équipe de fantômes ou de pacmans et détruisez vo... Cliquez pour télécharger Pacmin italc (1.0.9)ITALC (1.0.9)italc permet de voir ce que font les ordinateurs de votre réseau (attention : juste pour petit ré... Cliquez pour télécharger italc
|