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
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'
Transfert données et solution logiciel [ par jsmikwen ]
Bonjour, Nous avons besoin de transférer des données et des contacts sur une base MySQL. J'ai recu des conseils et cherche une solution logicielle.
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
PARUTION DE MON LIVRE SUR WPF 4PARUTION DE MON LIVRE SUR WPF 4 par odewit
La 2e édition de mon livre sur WPF sort aujourd'hui en version numérique et lundi en version papier :-)
L'ouvrage présente de façon approfondie les fonctionnalités de WPF 4 : graphisme 2D et 3D, animation, multimédia, interfaces utilisateur, databind...
Cliquez pour lire la suite de l'article par odewit EDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTINGEDM : COMMENT UTILISER L'HORIZONTAL ENTITY SPLITTING par Matthieu MEZIL
Une des raisons pour lesquelles j'adore l'Entity Framework est la puissance de son mapping. Beaucoup de développeurs pour ne pas dire la plus part n'en n'ont pas conscience. Pour rappel, j'ai réalisé des videos (en anglais) sur le mapping . Certains scena...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES[WP7DEV][REACTIVE] RENDRE LES REACTIVE EXTENSIONS PLUS STABLES par jay
Lorsque l'on développe des applications .NET, les exceptions non gérées dans des threads ont le désagréable effet de terminer le processus courant.
Dans l'exemple suivant.......(read more) ...
Cliquez pour lire la suite de l'article par jay WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS)WINDBG / SOS / PSSCOR2 : FAILED TO LOAD DATA ACCESS DLL (MSCORDACWKS) par coq
Ceux d'entre nous qui analysent des dumps d'applications .NET (notamment ceux créés via WER après un crash) en dehors de l'environnement initial ont probablement tous été confrontés au moins une fois au message suivant, à la saisie d'une commande SOS ...
Cliquez pour lire la suite de l'article par coq
Forum
REQUETE SQLREQUETE SQL par LordOfTheShadow
Cliquez pour lire la suite par LordOfTheShadow
Logiciels
Microsoft Office (2010)MICROSOFT OFFICE (2010)Microsoft Office 2010 offre de nouveaux moyens flexibles et puissants pour optimiser votre travai... Cliquez pour télécharger Microsoft Office SeaMonkey (2.0.7)SEAMONKEY (2.0.7)Le projet SeaMonkey est issu d'un effort communautaire pour developper une application tout en un... Cliquez pour télécharger SeaMonkey Safari (5.0.2)SAFARI (5.0.2)Le navigateur d'Apple a lui aussi été mis à jour, aussi bien dans sa mouture Windows que celle po... Cliquez pour télécharger Safari Mozilla FireFox (4.0 béta 5)MOZILLA FIREFOX (4.0 BéTA 5)Firefox 4.0 béta 5
L'une des nouveautés visibles les plus attendues réside sans doute dans l'a... Cliquez pour télécharger Mozilla FireFox Mozilla Firefox (3.6.9)MOZILLA FIREFOX (3.6.9)Firefox 3.6.9 corrige les problèmes suivants :
* Introduced support for the X-FRAME-OPTION... Cliquez pour télécharger Mozilla Firefox
|