由于某些原因,我的存储过程全部执行两次!我有一个静态函数,根据名称和参数运行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