2010-03-17 5 views
0

Bonjour,Erreur: Un SQLParamenter wtih ParameterName @myparm ne figure pas par cette SqlParameter Collection

Je travaille sur une application ASP.NET 3.5 WebForms et ont écrit le code suivant:

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click 
    Dim connectionString As String = WebConfigurationManager.ConnectionStrings("Diel_inventoryConnectionString").ConnectionString 
    Dim con As New SqlConnection(connectionString) 
    Dim adapter1 As New SqlDataAdapter 

    adapter1.SelectCommand = New SqlCommand 
    adapter1.SelectCommand.CommandType = CommandType.StoredProcedure 
    adapter1.SelectCommand.CommandText = "PartSproc" 

    Dim parmNSN As New SqlParameter("@NSN", SqlDbType.NVarChar) 
    Dim parmName As New SqlParameter("@PartName", SqlDbType.NVarChar) 
    txtNSN.Text = adapter1.SelectCommand.Parameters("@NSN").Value 
    txtSearch.Text = adapter1.SelectCommand.Parameters("@PartName").Value 

    Dim dt As New DataTable() 
    adapter1.Fill(dt) 
    MySearch.DataSource = dt 
    MySearch.DataBind() 

    End Sub 

Lorsque j'exécute la page, je reçois l'erreur Un paramètre SQLParameter avec @NSN n'est pas contenu par cette collection SQLParameter. J'ai essayé d'utiliser des apostrophes autour de @NSN et @PartName mais cela ne fonctionne pas non plus et présente l'erreur d'expression attendue.

Comment corriger le code ci-dessus afin qu'il fasse correctement référence aux paramètres @NSN et @PartName?

EDIT: Nouveau code ci-dessous

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click 
    Dim connectionString As String = WebConfigurationManager.ConnectionStrings("Diel_inventoryConnectionString").ConnectionString 
    Dim con As New SqlConnection(connectionString) 
    Dim cmd As New SqlCommand("PartSproc", con) 
    cmd.CommandType = CommandType.StoredProcedure 
    Dim adapter1 As New SqlDataAdapter 

    Dim parmNSN As New SqlParameter("@NSN", SqlDbType.NVarChar) 
    Dim parmName As New SqlParameter("@PartName", SqlDbType.NVarChar) 
    adapter1.SelectCommand.Parameters.Add(parmNSN) 
    adapter1.SelectCommand.Parameters.Add(parmName) 
    adapter1.SelectCommand.Parameters("@NSN").Value = txtNSN.Text 
    adapter1.SelectCommand.Parameters("@PartName").Value = txtSearch.Text 
    Using con 
     Dim dt As New DataTable() 
     adapter1.SelectCommand = cmd 
     adapter1.Fill(dt) 
     MySearch.DataSource = dt 
     MySearch.DataBind() 
    End Using 
End Sub 

Je reçois maintenant une erreur référence d'objet non définie à une instance d'un objet faisant référence au paramètre add parmNSN. Ai-je vraiment besoin de ceux-ci pour ajouter des instructions de paramétrage, puisque je les ai déjà définies comme les zones de texte ci-dessous?

Merci, Sid

Répondre

1

Je pense que vous avez transposé par hasard l'affectation des valeurs de paramètres - essayez ceci:

adapter1.SelectCommand.Parameters("@NSN").Value = txtNSN.Text 
adapter1.SelectCommand.Parameters("@PartName").Value = txtSearch.Text 
0

Avez-vous lu le message d'erreur? Le Sqlparameter que vous créez n'est jamais ajouté à la collection Sqlparameter de la commande;) C'est ce que le message d'erreur vous dit également.

Vous créez les paramètres, mais ils "pendent dans l'air" pour ainsi dire.

0

Pour ajouter à ce que Andrew & TomTom dit, vous devez ajouter les paramètres à la collection de paramètres de SelectCommand.

Quelque chose comme

adapter1.SelectCommand.Parameters.Add(parmNSN); 
adapter1.SelectCommand.Parameters.Add(parmName); 

Faites ceci avant de faire un appel à ExecuteReader() ou ExecuteScalar

+0

Dois-je utiliser ces directives, en plus de celles Andrew fournies ou sont-ils interchangeables? – SidC