Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2750 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ExecuteReader : la propriété Connection n'a pas été initialisée.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ExecuteReader : la propriété Connection n'a pas été initialisée.

n°2260975
shad0ww
Posté le 23-06-2015 à 17:02:14  profilanswer
 

Bonjour bonjour !
J'ai un gros probleme sur mon application C# :
 

Code :
  1. //
  2.         protected void boutonUpload_Click(object sender, EventArgs e)
  3.         {
  4.             //recuperation des informations de l'interface graphique
  5.             string fichier = this.pdfUpload.FileName;
  6.             //la connection, mdp à changer
  7.             string connexionString = "Data Source=(mon pc)\\SQLEXPRESS;" +
  8.                                       "Initial Catalog=BDD;" +
  9.                                       "User id=sa;" +
  10.                                       "Password=(mon mdp);";
  11.             SqlConnection connection = new SqlConnection(connexionString);
  12.             connection.Open();
  13.             SqlCommand cmd = new SqlCommand( connexionString );
  14.             cmd.CommandType = CommandType.StoredProcedure;
  15.             cmd.Parameters.Add(new SqlParameter("@Clé primaire", 1));
  16.             cmd.Parameters.Add(new SqlParameter("@Champ", "azertyuio" ));
  17.             cmd.Parameters.Add(new SqlParameter("@Fichier", fichier));
  18.            
  19.             // on envoie la commande au serveur
  20.             cmd.ExecuteReader();
  21.            
  22.             connection.Close();
  23.         }


 
Il execute très bien jusqu'à "cmd.ExecuteReader();", et paf :
 

Une exception de type 'System.InvalidOperationException' s'est produite dans System.Data.dll mais n'a pas été gérée dans le code utilisateur
 
Informations supplémentaires : ExecuteReader : la propriété Connection n'a pas été initialisée.


 
Merci  d'avance de toute aide !
 

mood
Publicité
Posté le 23-06-2015 à 17:02:14  profilanswer
 

n°2260977
TotalRecal​l
Posté le 23-06-2015 à 17:05:36  profilanswer
 

Je suggère de commencer par lire le message d'erreur, et te demander ce que tu pourrais bien faire de l'objet Connection que tu crées justement au dessus sans rien en faire :p.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2260978
TotalRecal​l
Posté le 23-06-2015 à 17:09:43  profilanswer
 

Et aussi, le constructeur de SqlCommand n'a jamais pris et ne prendra jamais en paramètre une connectionString [:spamafote].

 

Allez, pour être sympa, essaie un truc de ce genre :

Code :
  1. //recuperation des informations de l'interface graphique
  2.             string fichier = this.pdfUpload.FileName;
  3.             //la connection, mdp à changer
  4.             string connexionString = "Data Source=(mon pc)\\SQLEXPRESS;" +
  5.                                       "Initial Catalog=BDD;" +
  6.                                       "User id=sa;" +
  7.                                       "Password=(mon mdp);";
  8.             SqlConnection connection = new SqlConnection(connexionString);
  9.             connection.Open();
  10.             SqlCommand cmd = new SqlCommand( "Le nom de ta procédure stockée que tu as du oublier en route !!", connection);
  11.             cmd.CommandType = CommandType.StoredProcedure;
  12.             cmd.Parameters.Add(new SqlParameter("@Clé primaire", 1));
  13.             cmd.Parameters.Add(new SqlParameter("@Champ", "azertyuio" ));
  14.             cmd.Parameters.Add(new SqlParameter("@Fichier", fichier));
  15.          
  16.             // on envoie la commande au serveur
  17.             cmd.ExecuteReader(); // Faut faire un truc avec ça, ou alors c'est pas un reader que tu voulais...
  18.          
  19.             connection.Close();


Message édité par TotalRecall le 23-06-2015 à 17:10:50

---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2261042
shad0ww
Posté le 24-06-2015 à 09:33:00  profilanswer
 

Merci ! En effet, ca marche un poil mieux : je debute à peine en SQL, et je me melange les pinceaux sur les commandes
Je suis passé à :
 

Code :
  1. SqlCommand cmd = new SqlCommand();
  2.             cmd.Connection = connection;
  3.             string commandText = "INSERT INTO Table VALUES(@Clé primaire, @Champ, ";
  4.             commandText = commandText + "@Fichier)";
  5.             cmd.CommandText = commandText;
  6.             cmd.CommandType = CommandType.Text;
  7.          
  8.             int cle=1;
  9.             string champRenseignement = "azertyuio";
  10.             cmd.Parameters.Add(new SqlParameter("@Clé primaire", cle));
  11.             cmd.Parameters.Add(new SqlParameter("@Champ", champRenseignement));
  12.             cmd.Parameters.Add(new SqlParameter("@Fichier", fichier));
  13.            
  14.             // on envoie la commande au serveur
  15.             cmd.ExecuteNonQuery();


 
Et ca a l'air de mieux lui convenir, meme s'il me met "Informations supplémentaires : Syntaxe incorrecte vers 'int'."
 
Je me suis dis que ca venait peut-etre de ma table, mais elle est bien de la forme  
[Clé primaire] int  
Champ nvarchar(50)  
Fichier varchar(MAX)  
 
Je vais, je pense, reprendre la SQL depuis le debut, à savoir récupérer des informations de la table et ,on en envoyer =)

n°2261043
TotalRecal​l
Posté le 24-06-2015 à 09:39:51  profilanswer
 

Je ne sais pas si c'est la cause (le message d'erreur ne correspond pas trop et tu ne précises pas comment tu l'obtiens), mais en tout cas, ton champ "Clé primaire" avec l'espace et la lettre accentué c'est pas terrible, tant pour la lecture que la fiabilité du code.
Un truc genre "ClePrimaire" serait mieux (sachant qu'il y a aussi des normes conseillées pour identifier les PK, FK etc).
 


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
n°2261074
shad0ww
Posté le 24-06-2015 à 15:41:04  profilanswer
 

Ca marche et j'arrive meme à afficher les noms dans un tableau :
 

Code :
  1. protected void boutonUpload_Click(object sender, EventArgs e)
  2.         {
  3.             if (pdfUpload.HasFiles)
  4.                 foreach (var file in pdfUpload.PostedFiles)
  5.                 {
  6.                     // TODO faire multiples fichiers  
  7.                     string nomFichier = pdfUpload.FileName;
  8.                     Stream fichier = pdfUpload.FileContent;
  9.                     // TODO enlever du Hard code
  10.                     //la connection, mdp à changer
  11.                     string connexionString = "Data Source=*****\\SQLEXPRESS;" +
  12.                                               "Initial Catalog=filestream_database;" +
  13.                                               "User id=sa;" +
  14.                                               "Password=*****;";
  15.                     SqlConnection connection = new SqlConnection(connexionString);
  16.                     connection.Open();
  17.                     //  La commande qu'on passe au SQL :
  18.                     SqlCommand cmd = new SqlCommand();
  19.                     cmd.Connection = connection;
  20.                     string commandText = "INSERT INTO dbo.TableFullstream VALUES (@ID, @ChampRenseignement, @Doc)";
  21.                     cmd.CommandText = commandText;
  22.                     cmd.CommandType = CommandType.Text;
  23.                     cmd.Parameters.Add(new SqlParameter("@ID", Guid.NewGuid()));
  24.                     cmd.Parameters.Add(new SqlParameter("@ChampRenseignement", nomFichier));
  25.                     cmd.Parameters.Add(new SqlParameter("@Doc", fichier));
  26.                     // on envoie la commande au serveur
  27.                     cmd.ExecuteNonQuery();
  28.                     connection.Close();
  29.                 }
  30.             updateTableFichiers();
  31.         }


 
 
Me reste plus qu'à lire les fichiers en question, et c'est la partie dure =)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  ExecuteReader : la propriété Connection n'a pas été initialisée.

 

Sujets relatifs
Réaliser un menu de connectionPropriété du private sub
Affecter une propriété aux éléments d'une liste mais pas aux souslisteerreur Impossible d'obtenir la propriété 0 d'une réference null ou non
Connection à un serveurPropriété data, envoi du paramètre au serveur
[XUL] propriété width ignorée sur un bouton xulconnection à une base Oracle sous java avec JDBC
Connection wifi avec un .batProblème Connection MySQL sur mon VPS
Plus de sujets relatifs à : ExecuteReader : la propriété Connection n'a pas été initialisée.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR