2017-02-06 1 views
0

Il indique en outre que la procédure ou la fonction spAddOrganization attend paramètre Organizational_Number qui n'a pas été fourniUne exception de type « System.ArgumentException » est survenue dans System.Data.dll mais n'a pas été traitée dans le code utilisateur

IEnumerable<OrganizationalDetails> OrganizationalDetails 
{ 
    get 
    { 
     string connectionString = ConfigurationManager.ConnectionStrings["OnlineDBContext"].ToString(); 
     List<OrganizationalDetails> organization = new List<OrganizationalDetails>(); 

     using (SqlConnection con = new SqlConnection(connectionString)) 
     { 
      SqlCommand cmd = new SqlCommand("spAddOrganization", con); 
      cmd.CommandType = CommandType.StoredProcedure;` 
      con.Open(); 

      SqlDataReader myreader = cmd.ExecuteReader(); 

      while(myreader.Read()) 
      { 
       OrganizationalDetails organize = new OrganizationalDetails(); 
       organize.Organizational_Id = Convert.ToInt32(myreader["Organizational_Id"].ToString()); 
       organize.Organizational_Number = myreader["Organizational_Number"].ToString(); 
       organize.Location = myreader["Location"].ToString(); 
       organize.Organization_Address = myreader["Organizational_Address"].ToString(); 
       organize.TelephoneNo_Org = myreader["TelephoneNo_Org"].ToString(); 
       organize.Organizational_Name = myreader["Organizational_Name"].ToString();`ganizational_Name = myreader["Organizational_Name"].ToString();_Name = myreader["Organizational_Name"].ToString(); 
       organize.Administrator_Name = myreader["Administrator_Name"].ToString(); 
       organization.Add(organize); 
      } 
     } 
     return organization; 
    } 
} 

La stockée procédure est la suivante:

ALTER PROCEDURE [dbo].[spAddOrganization] 
    @Organizational_Number nvarchar(50), 
    @Location nvarchar(50), 
    @Organizational_Address nvarchar(50), 
    @TelephoneNo_Org nvarchar(50), 
    @Organizational_Name nvarchar(50), 
    @Administrator_Name nvarchar(50) 
AS 
BEGIN 
    INSERT INTO Organization_Details(Organizational_Number,Location,Organizational_Address,TelephoneNo_Org,Organizational_Name,Administrator_Name) 
    VALUES(@Organizational_Number,@Location,@Organizational_Address,@TelephoneNo_Org,@Organizational_Name,@Administrator_Name) 
END 

Tout semble parfait. J'ai essayé de googler, essayé mais trouvé réponse pas vraiment compréhensible.

+0

Le message d'erreur est assez auto explainatory - AddOrganization permet d'insérer des valeurs, de sorte que ses valeurs attendent pour « @ Organizational_Number, @ Location, @ Organizational_Address, @ TelephoneNo_Org, @ Nom_organisationnel, @ Administrator_Name "vous n'en avez fourni aucun .. en fait, vous semblez penser qu'il sélectionnera des éléments - vous devez avoir choisi la mauvaise procédure stockée – BugFinder

+0

Veuillez formater votre extrait de code de manière lisible et lisez [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). –

+0

Votre procédure stockée attend des paramètres (que vous ne fournissez pas) et les insère dans une table. Votre code tente d'ouvrir un lecteur, ce qui suggère que votre code s'attend à appeler une procédure avec une instruction select. C'est un peu décousu. – Theo

Répondre

0

Parce que votre stockée Procerure insérer un encart article vous devez passer les arguments comme ceci:

string connectionString = ConfigurationManager.ConnectionStrings["OnlineDBContext"].ToString(); 

using (SqlConnection con = new SqlConnection(connectionString)) 
{ 

    SqlCommand cmd = new SqlCommand("spAddOrganization", con); 
    con.Open(); 
    cmd.CommandType = CommandType.StoredProcedure; 

    SqlParameter[] parameters = new SqlParameter[] 
    { 
     new SqlParameter("@Organizational_Number", organize.Organizational_Number), 
     new SqlParameter("@Location", organize.Location), 
     new SqlParameter("@Organizational_Address", organize.Organization_Address), 
     new SqlParameter("@TelephoneNo_Org", organize.TelephoneNo_Org), 
     new SqlParameter("@Organizational_Name", organize.Organizational_Name), 
     new SqlParameter("@Administrator_Name", organize.Administrator_Name) 
    }; 
    cmd.Parameters.AddRange(parameters); 
    int retorno = cmd.ExecuteNonQuery(); 
}