none
[Résolu] Connexion SQl RRS feed

  • Question

  • Bonjour,

     

    j'ai cette erreur quand je fais un nouvel ah=jouts dans ma base de donnée, via mon site en aspx.

     

    La référence d'objet n'est pas définie à une instance d'un objet.
    

     

    Voici mon code

    protected void BtnEnvpersonnel_Click(object sender, EventArgs e)
     {
      //Connection Serveur
      try
      {
       string ConnectionStrings = ConfigurationManager.ConnectionStrings["christophe-pc/sqlexpress.master.dbo"].ToString();
      }
    
      catch (Exception E)
      {
       lblMessage.Text = E.Message;
      }
      // Inserer les données
    
      // on récupere les données du formulaire.
      string persoNom = TxtBxName.Text;
      string persoPrenom = TxtBxLastName.Text;
      string persoAge = TxtBxAge.Text;
      string persoMetier = TxtBxMetier.Text;
      string persoExpe = TxtBxExpe.Text;
      string persoSpec = TxtbxSpec.Text;
      int persoRestoId = DropDownListIdResto.SelectedIndex;
    
      // on ajoute les nouvelles données à la base.
    
    
      string vs_chaine = "INSERT INTO [SiteResto].[dbo].[Personnel] ([Name],[lastName],[Metier],[Age],[Specialite],[Experience],[IDResto]) VALUES (,@persoNom,@persoPrenom,@persoAge,@persoMetier,@persoExp,@persoSpec,@persoRestoId)";
    
      SqlCommand comm = new SqlCommand(vs_chaine);
    
    
      comm.Parameters.Add(new SqlParameter("@persoNom", SqlDataSource1));
      comm.Parameters["@persoNom"].Value = persoNom;
    
      comm.Parameters.Add(new SqlParameter("@persoPrenom", SqlDataSource1));
      comm.Parameters["@persoPrenom"].Value = persoPrenom;
    
      comm.Parameters.Add(new SqlParameter("@persoAge", SqlDataSource1));
      comm.Parameters["@persoAge"].Value = persoAge;
    
      comm.Parameters.Add(new SqlParameter("@persoMetier", SqlDataSource1));
      comm.Parameters["@persoMetier"].Value = persoMetier;
    
      comm.Parameters.Add(new SqlParameter("@persoExp", SqlDataSource1));
      comm.Parameters["@persoExp"].Value = persoExpe;
    
      comm.Parameters.Add(new SqlParameter("@persoSpec", SqlDataSource1));
      comm.Parameters["@persoSpec"].Value = persoSpec;
    
      comm.Parameters.Add(new SqlParameter("@persoRestoId", SqlDataSource1));
      comm.Parameters["@persoRestoId"].Value = persoRestoId;
     }
    


    Dans mon fichier web.config

     

    <connectionStrings>
      <add name="ConnectionString" connectionString="Data Source=christophe-pc\sqlexpress.master.dbo;Integrated Security=True"
       providerName="System.Data.SqlClient" />
      <add name="ConnectionString2" connectionString="Data Source=CHRISTOPHE-PC\SQLEXPRESS;Integrated Security=True"
       providerName="System.Data.SqlClient" />
     </connectionStrings>

     

     

    Merci



    • Modifié WiseFun77 lundi 25 juillet 2011 10:28
    samedi 23 juillet 2011 15:35

Réponses

  • En fait non, vous avez indiqué comme nom de connexion : ConnectionStrings et dans votre code vous utiliser it-client-03.SiteResto.dbo

    Pour éviter toute confusion je vous conseille un nom plus "parlant" par exemple SiteRestoConn :

    <add name="SiteRestoConn" connectionString="Data Source=IT-CLIENT-03;Initial Catalog=SiteResto;;Integrated Security=True" 
      providerName="System.Data.SqlClient" />
    
    
    L'appel se fera alors via :
    string ConnectionStrings = ConfigurationManager.ConnectionStrings["SiteRestoConn"].ToString();
    
    


     

     


    • Marqué comme réponse WiseFun77 lundi 25 juillet 2011 10:27
    lundi 25 juillet 2011 10:08
    Modérateur

Toutes les réponses

  • Bonjours

     string ConnectionStrings = ConfigurationManager.ConnectionStrings["christophe-pc/sqlexpress.master.dbo"].ToString();
          SqlConnection connection = new SqlConnection(ConnectionStrings);
          using (connection)
          {
            try
            {
              connection.Open();
              string vs_chaine = "INSERT INTO [SiteResto].[dbo].[Personnel] ([Name],[lastName]," +
                "[Metier],[Age],[Specialite],[Experience],[IDResto]) VALUES" +
                "(,@persoNom,@persoPrenom,@persoAge,@persoMetier,@persoExp,@persoSpec,@persoRestoId)";
    
    
              string persoNom = TxtBxName.Text;
              string persoPrenom = TxtBxLastName.Text;
              string persoAge = TxtBxAge.Text;
              string persoMetier = TxtBxMetier.Text;
              string persoExpe = TxtBxExpe.Text;
              string persoSpec = TxtbxSpec.Text;
              int persoRestoId = DropDownListIdResto.SelectedIndex;
    
              SqlCommand comm = new SqlCommand(vs_chaine, connection);
    
              comm.Parameters.Add(new SqlParameter("@persoNom", persoNom));
              comm.Parameters.Add(new SqlParameter("@persoPrenom", persoPrenom));
              comm.Parameters.Add(new SqlParameter("@persoAge", persoAge));
              comm.Parameters.Add(new SqlParameter("@persoMetier", persoMetier));
              comm.Parameters.Add(new SqlParameter("@persoExp", persoExpe));
              comm.Parameters.Add(new SqlParameter("@persoSpec", persoSpec));
              comm.Parameters.Add(new SqlParameter("@persoRestoId", persoRestoId));
              comm.ExecuteNonQuery();
            }
            catch (SqlException caught)
            {
    
            }
            finally
            { connection.Close(); }
      
    
          }
    

    Cordialement


    The complexity resides in the simplicity Follow me at: http://smartssolutions.blogspot.com
    dimanche 24 juillet 2011 12:05
  • Bonjour,

     

    Merci très sincèrement pour ton aide.

    Je vais corriger mon code dès demain matin.

    Merci

    Très Cordialement

    dimanche 24 juillet 2011 19:58
  • Bonjour,

    Je viens de tester ton code mais j'ai la même erreur.

     

    Merci

    lundi 25 juillet 2011 07:46
  • Bonjour,

    sur quelle instruction obtenez vous cette erreur ? au niveau de la connection string ?

    Cordialement

    lundi 25 juillet 2011 08:30
    Modérateur
  • Bonjour,

    Ce que je peux vous dire c'est quand je valide mon formulaire pour enregistrer les nouvelles données.

    J'ai mis le code dans 

     protected void BtnEnvpersonnel_Click(object sender, EventArgs e)

     

    voici tous mon code si cela peut t'aider.

    using System;
    using System.Configuration;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    
    namespace SiteFormation
    {
      public partial class AjoutPersonnel1 : System.Web.UI.Page
      {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void BtnEnvpersonnel_Click(object sender, EventArgs e)
        {
          //Connection Serveur
          try
          {
            string ConnectionStrings = ConfigurationManager.ConnectionStrings["it-client-03.SiteResto.dbo"].ToString();
            SqlConnection connection = new SqlConnection(ConnectionStrings);
          }
    
          catch (Exception E)
          {
            lblMessage.Text = E.Message;
          }
          // Inserer les données
           
          // on récupere les données du formulaire.
          string persoNom = TxtBxName.Text;
          string persoPrenom = TxtBxLastName.Text;
          string persoAge = TxtBxAge.Text;
          string persoMetier = TxtBxMetier.Text;
          string persoExpe = TxtBxExpe.Text;
          string persoSpec = TxtbxSpec.Text;
          int persoRestoId = DropDownListIdResto.SelectedIndex;
    
          // on ajoute les nouvelles données à la base.
    
    
          string vs_chaine = "INSERT INTO [SiteResto].[dbo].[Personnel] ([Name],[lastName],[Metier],[Age],[Specialite],"+
          "[Experience],[IDResto]) VALUES (,@persoNom,@persoPrenom,@persoAge,@persoMetier,@persoExp,@persoSpec,@persoRestoId)";
    
          SqlCommand comm = new SqlCommand(vs_chaine); 
    
    
          comm.Parameters.Add(new SqlParameter("@persoNom",SqlDataSource1));
          comm.Parameters["@persoNom"].Value = persoNom;
    
          comm.Parameters.Add(new SqlParameter("@persoPrenom", SqlDataSource1));
          comm.Parameters["@persoPrenom"].Value = persoPrenom;
    
          comm.Parameters.Add(new SqlParameter("@persoAge", SqlDataSource1));
          comm.Parameters["@persoAge"].Value = persoAge;
    
          comm.Parameters.Add(new SqlParameter("@persoMetier", SqlDataSource1));
          comm.Parameters["@persoMetier"].Value = persoMetier;
    
          comm.Parameters.Add(new SqlParameter("@persoExp", SqlDataSource1));
          comm.Parameters["@persoExp"].Value = persoExpe;
    
          comm.Parameters.Add(new SqlParameter("@persoSpec", SqlDataSource1));
          comm.Parameters["@persoSpec"].Value = persoSpec;
    
          comm.Parameters.Add(new SqlParameter("@persoRestoId", SqlDataSource1));
          comm.Parameters["@persoRestoId"].Value = persoRestoId;
    
    
        }
    
        
    
        
        
      }
    }
    

    Merci

    lundi 25 juillet 2011 08:37
  • Bonjour,

    Je viens de supprimer tous mon code pour enregistrer dans la bas e de données.

    dès que je clique sur le bouton , le message s'affiche.

     

    Merci

    lundi 25 juillet 2011 08:47
  • Quel code est encore présent dans la méthode BtnEnvpersonnel_Click ?

    Pouvez vous nous fournir la trace de votre erreur qui est affiché dans la page ?

    lundi 25 juillet 2011 08:50
    Modérateur
  • Bonjour, Le code actuel.

    protected void BtnEnvpersonnel_Click(object sender, EventArgs e)
        {
          //Connection Serveur
          try
          {
            string ConnectionStrings = ConfigurationManager.ConnectionStrings["it-client-03.SiteResto.dbo"].ToString();
            SqlConnection connection = new SqlConnection(ConnectionStrings);
          }
    
          catch (Exception E)
          {
            lblMessage.Text = E.Message;
          }
          // Inserer les données
           
          // on récupere les données du formulaire.
          string persoNom = TxtBxName.Text;
          string persoPrenom = TxtBxLastName.Text;
          string persoAge = TxtBxAge.Text;
          string persoMetier = TxtBxMetier.Text;
          string persoExpe = TxtBxExpe.Text;
          string persoSpec = TxtbxSpec.Text;
          int persoRestoId = DropDownListIdResto.SelectedIndex;
    
          // on ajoute les nouvelles données à la base.
    
    
          string vs_chaine = "INSERT INTO [SiteResto].[dbo].[Personnel] ([Name],[lastName],[Metier],[Age],[Specialite]," +
          "[Experience],[IDResto]) VALUES (,@persoNom),@persoPrenom,@persoAge,@persoMetier,@persoExp,@persoSpec,@persoRestoId";
    
          SqlCommand comm = new SqlCommand(vs_chaine);
    
    
          comm.Parameters.Add(new SqlParameter("@persoNom", SqlDataSource1));
          comm.Parameters["@persoNom"].Value = persoNom;
    
          comm.Parameters.Add(new SqlParameter("@persoPrenom", SqlDataSource1));
          comm.Parameters["@persoPrenom"].Value = persoPrenom;
    
          comm.Parameters.Add(new SqlParameter("@persoAge", SqlDataSource1));
          comm.Parameters["@persoAge"].Value = persoAge;
    
          comm.Parameters.Add(new SqlParameter("@persoMetier", SqlDataSource1));
          comm.Parameters["@persoMetier"].Value = persoMetier;
    
          comm.Parameters.Add(new SqlParameter("@persoExp", SqlDataSource1));
          comm.Parameters["@persoExp"].Value = persoExpe;
    
          comm.Parameters.Add(new SqlParameter("@persoSpec", SqlDataSource1));
          comm.Parameters["@persoSpec"].Value = persoSpec;
    
          comm.Parameters.Add(new SqlParameter("@persoRestoId", SqlDataSource1));
          comm.Parameters["@persoRestoId"].Value = persoRestoId;
    
    
        }
    
    

    Comment on fait pour voir " La trace de mon erreur "

     

    Merci 

    lundi 25 juillet 2011 08:55
  • Bonjour,

    vous testez votre code depuis visual studio ? l'erreur ainsi que la trace de cette erreur est affichée directement dans le navigateur à la place de l'affichage de la page.

    Supprimer le block try/catch qui encapsule la lecture de la connection string pour éviter qu'une erreur dans cette portion de code soit "cachée".

    lundi 25 juillet 2011 09:06
    Modérateur
  • Bonjour,

    Voilà l'erreur;

    Server Error in '/' Application.
    --------------------------------------------------------------------------------
    
    Object reference not set to an instance of an object. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
    
    Source Error: 
    
    
    Line 22:       //try
    Line 23:       //{
    Line 24:         string ConnectionStrings = ConfigurationManager.ConnectionStrings["it-client-03.SiteResto.dbo"].ToString();
    Line 25:         SqlConnection connection = new SqlConnection(ConnectionStrings);
    Line 26:       //}
     
    
    Source File: C:\Users\croblet\Documents\Visual Studio 2010\Projects\SiteFormation\SiteFormation\AjoutPersonnel.aspx.cs  Line: 24 
    
    Stack Trace: 
    
    
    [NullReferenceException: Object reference not set to an instance of an object.]
      SiteFormation.AjoutPersonnel1.BtnEnvpersonnel_Click(Object sender, EventArgs e) in C:\Users\croblet\Documents\Visual Studio 2010\Projects\SiteFormation\SiteFormation\AjoutPersonnel.aspx.cs:24
      System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
      System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
      System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
      System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
      System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
      System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
    
     
    
    
    --------------------------------------------------------------------------------
    Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1 
    


    Merci

     

    lundi 25 juillet 2011 09:13
  • Bien on avance :)

    donc l'erreur est bien due à votre chaine de connexion. Celle-ci doit être définie dans le fichier web.config. Il s'agit d'une portion de xml commençant par :

     

    <connectionStrings>
    <add name=
    Est ce bien la cas ? name doit correspondre à l'index que vous passez dans l'appel à ConfigurationManager.ConnectionStrings[ ... ]

    Plus d'infos : Read Connection Strings from the Web.config File


    lundi 25 juillet 2011 09:21
    Modérateur
  • Bonjour,

    j'ai bien le même index dans le fichier web.config

    <add name="ConnectionStrings" connectionString="Data Source=IT-CLIENT-03;Initial Catalog=SiteResto;;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
    

    Merci

    lundi 25 juillet 2011 09:55
  • En fait non, vous avez indiqué comme nom de connexion : ConnectionStrings et dans votre code vous utiliser it-client-03.SiteResto.dbo

    Pour éviter toute confusion je vous conseille un nom plus "parlant" par exemple SiteRestoConn :

    <add name="SiteRestoConn" connectionString="Data Source=IT-CLIENT-03;Initial Catalog=SiteResto;;Integrated Security=True" 
      providerName="System.Data.SqlClient" />
    
    
    L'appel se fera alors via :
    string ConnectionStrings = ConfigurationManager.ConnectionStrings["SiteRestoConn"].ToString();
    
    


     

     


    • Marqué comme réponse WiseFun77 lundi 25 juillet 2011 10:27
    lundi 25 juillet 2011 10:08
    Modérateur
  • Bonjours

    Il faut indiquer exactement le nom de la chaine tel quelle est definie au niveau du fichier de configuration

    string ConnectionStrings = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
    
    //Ou 
    
    string ConnectionStrings = ConfigurationManager.ConnectionStrings["ConnectionString2"].ToString();
    
    
    


    Sinon ce la va engendrer une exception

     

    Cordialement


    The complexity resides in the simplicity Follow me at: http://smartssolutions.blogspot.com
    lundi 25 juillet 2011 10:15
  • Bonjour,

     

    Merci et super , j'ai utilisé " AjoutPersonnel ". plus d'erreur d'affichée mais par contre les données saisies dans le formulaire ne sont pas enregistrée dans la base de données.

     

    merci très sincèrement pour  votre patience.

    lundi 25 juillet 2011 10:16
  • Pas de quoi, pensez à valider les messages utiles et à marquer la réponse.

    Si vous aviez des difficultés à trouver les raisons de ce nouveau problème, faite un nouveau message.

    Cordialement

    • Marqué comme réponse WiseFun77 lundi 25 juillet 2011 10:26
    • Non marqué comme réponse WiseFun77 lundi 25 juillet 2011 10:27
    lundi 25 juillet 2011 10:20
    Modérateur