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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
PROCEDURE MYSQLPROCEDURE MYSQL par gearmat
Cliquez pour lire la suite par gearmat
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|