2009-09-08 10 views
1

je veux rechercher un enregistrement de la recherche de base de données SQL par son prénom si im en utilisant une fonction dans la couche de données, mais il ne fonctionne pas s'il vous plaît me corriger là où je suis allé mal ici est ma fonction:de base de données

Public Function searchCustomer(ByVal custFname As String) As DataTable 
      Dim tabletdata As New DataTable 
      Dim conn As New SqlConnection(con_string) 
      conn.Open() 
      Dim dCmd As New SqlCommand("selectCustomerByFname", conn) 
      dCmd.CommandType = CommandType.StoredProcedure 
      Try 
       dCmd.Parameters.AddWithValue("@Cust_Fnam", custFname) 
       'dCmd.ExecuteNonQuery() 
       Dim dadaptr As New SqlDataAdapter(dCmd) 
       dadaptr.SelectCommand = dCmd 
       dadaptr.SelectCommand.ExecuteNonQuery() 
       dadaptr.Fill(tabletdata) 


       Return tabletdata 
      Catch 
       Throw 
      Finally 
       dCmd.Dispose() 
       conn.Close() 
       conn.Dispose() 
      End Try 

     End Function 
+1

'Ne fonctionne pas'? pas grand chose à y aller est là. Vous devriez publier votre procédure stockée ainsi que l'erreur réelle que vous obtenez, le cas échéant (peut-être que la requête ne renvoie rien ... – Colin

Répondre

1

La méthode Fill s'ouvre et ferme implicitement la connexion. Fill Method

Résumé: La méthode de remplissage récupère lignes de la source de données en utilisant l'instruction SELECT spécifiée par une propriété SelectCommand associée . L'objet de connexion associé à l'instruction SELECT doit être valide, mais il n'est pas nécessaire que le soit ouvert. Si la connexion est fermée avant le remplissage est appelé, il est ouvert pour récupérer les données, puis fermé. Si la connexion est ouverte avant l'appel de Fill, il reste ouvert.

Public Function searchCustomer(ByVal custFname As String) As DataTable 
    Dim tabletdata As New DataTable 
    Dim conn As New SqlConnection(con_string) 
    Dim dCmd As New SqlCommand("selectCustomerByFname", conn) 
    dCmd.CommandType = CommandType.StoredProcedure 

    dCmd.Parameters.AddWithValue("@Cust_Fnam", custFname) 
    Dim dadaptr As New SqlDataAdapter(dCmd) 
    dadaptr.SelectCommand = dCmd 
    dadaptr.Fill(tabletdata) 
    Return tabletdata 
End Function