由於某些原因,我的存儲過程全部執行兩次!我有一個靜態函數,根據名稱和參數運行SP並填充數據表。存儲過程執行兩次!
Public Shared Function RunSP(ByVal spName As String, ByRef spParams As Dictionary(Of String, String), ByRef pDataTable As DataTable) As Integer
Dim cmd As New SqlCommand
Dim lAdapter As SqlDataAdapter
Try
cmd.Connection = New SqlConnection(ConnectionString)
cmd.Connection.Open()
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = spName
For Each item As KeyValuePair(Of String, String) In spParams
cmd.Parameters.AddWithValue(item.Key, item.Value)
Next
cmd.ExecuteNonQuery()
If Not pDataTable Is Nothing Then
lAdapter = New SqlDataAdapter(cmd)
lAdapter.Fill(pDataTable)
End If
RunSP = 0
Catch ex As Exception
If (Not cmd Is Nothing) Then
cmd.Dispose()
End If
RunSP = -1
End Try
End Function
代碼有問題嗎?我使用調試器進行了檢查,並且相應的SP肯定只被調用過一次,即該函數僅對特定的插入函數運行一次,但將兩件事插入表中。
我想返回一個DataTable,有沒有辦法再次執行查詢,或者我應該放棄「ExecuteNonQuery」部分? – DisgruntledGoat 2009-08-28 11:15:26
廢棄ExecuteNonQuery部分。這通常用於運行不返回行的代碼,例如更新和刪除。 – MartW 2009-08-28 11:16:22