2009-09-08 103 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