2009-09-08 160 views
1

我想通过名字来搜索从SQL数据库检索记录,以便在数据层使用功能,即时通讯,但它无法正常工作,请大家指正我哪里错了,这里是我的功能:数据库搜索功能

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

'不工作'?在那里没有太多的继续。你应该发布你的存储过程以及你得到的实际错误(如果有的话)(也许查询不会返回任何东西... – Colin 2009-09-08 11:33:05

回答

1

填充方法隐式打开和关闭连接。 Fill Method

内容:Fill方法从使用由 相关SelectCommand属性中指定的 SELECT语句的数据源检索 行。与 SELECT语句关联的连接对象 必须有效,但它不需要打开 。如果在调用“填充”为 之前 连接已关闭,则会打开它以检索数据,然后关闭 。如果连接在调用Fill之前打开 ,则它仍然是 。

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