Procédures Stockées

[Résolu]
Signaler
Messages postés
5
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
30 novembre 2006
-
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
-
Bonjour,
J'utilise vs2005 c# express et sql server 2005 express.
J'essaye d'éxécuter une procédure stockée inserttype:
ALTER PROCEDURE dbo.inserttype
    (
    @str_type nchar(20)
    )
AS
    select * from type where type= @str_type
    if @@rowcount<1
        insert into type values (@str_type)  
 
j'appelle cette procédure via ces instructions:
                    string chainedeconnection = "Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\mdatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
                    SqlConnection connection = new SqlConnection(chainedeconnection);
                    SqlCommand insertiontype = new SqlCommand("dbo.inserttype", connection);
                    insertiontype.Parameters.Clear();
                    insertiontype.CommandType = CommandType.StoredProcedure;
                    insertiontype.CommandText = "dbo.inserttype";
                    insertiontype.Parameters.Add("@str_type", SqlDbType.NChar);
                    insertiontype.Parameters["@str_type"].Value = inputbox.str_type;
                    connection.Open();
                    resultat = insertiontype.ExecuteNonQuery();
                    connection.Close();

tout a l'air de bien se passer mais le nouveau champ n'est pas enregistré dans la base alors que le résultat n'indique qu'il y a eu une ligne d'affectée donc, en principe, l'insertion du nouveau champs.
Si j'essaye d'ajouter un champs en doublon (interdit dans ma table), c'est un resultat=0 m'indiquant qu'aucune ligne n'a été modifiée.
Avez-vous une idée pourquoi, le nouveau champs n'est pas inseré dans la table?
En testant directement
, dans vs2005,
la procédure stockée , le champs est bien inséré...

Merci d'avance de vos précieux conseils!

6 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
juste comme ca... tu redémarres ton projet entre temps ?

Je dis ça, pour la simple est bonne raison qu'a chaque compilation (exécution) Visual Studio recopie le fichier mdatabase.mdf dans le répertoire bin... donc c'est normal que tu ne vois pas tes données...

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
30 novembre 2006

Ok je me doutais que cela venait d'un problème de ce genre!
Mais bon, ça facilite pas le développement...  maintenant je me méfierais.
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
la solution, c'est de changer les propriétés du fichiers .mdf et de changer "Copy to output directory" en "Copy if newer"

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
5
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
30 novembre 2006

Re bonjour,
Je n'ai pas trouvé le pramètre qui permet s'inhiber cette copie de la BDD à chaque éxécution du programme sous vs2005. J'ai vs2005  c# et sql server 2005 tous les deux en version Express, peut-être que cette fonction n'éxiste pas sur ces versions?

merci
Messages postés
5
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
30 novembre 2006

Bon ben j'ai trouvé où était ce paramètre, bien sûr je cherchais du mauvais côté...

Merci
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
37
lol... ca arrive... la fatigue fait des ravages ces temps ci ;)

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]