循环通过数据表并运行存储过程
问题描述:
我想循环通过一个数据表,这将传递信息到我的存储过程,但它不工作。循环通过数据表并运行存储过程
即使它工作时,我manuelly
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dv As New DataView
Dim dt As New DataTable
dv = SqlDataSource1.Select(DataSourceSelectArguments.Empty)
dt = dv.ToTable()
For Each row As DataRow In dt.Rows
If row("vtr_gen10").ToString() = "y" Or row("vn10").ToString() = "a" Or row("vtr_gen10").ToString() = "p" Then
Dim SQLCon As New SqlClient.SqlConnection
Dim sqlcmd As New SqlCommand
SQLCon.ConnectionString = SqlDataSource2.ConnectionString
SQLCon.Open()
sqlcmd.CommandText = "protest" ' Stored Procedure to Call
sqlcmd.CommandType = CommandType.StoredProcedure 'Setup Command Type
sqlcmd.Connection = SQLCon 'Active Connection
sqlcmd.Parameters.AddWithValue("@ID", row("id"))
sqlcmd.Parameters.AddWithValue("@Value", "Y")
sqlcmd.ExecuteNonQuery()
SQLCon.Close()
End If
Next
End Sub
答
正尝试加入睡眠你绝对确定在前两条记录后IF标准得到满足?有一点要注意的是空格或其他字符串异常,例如Carraige在您的数据库中返回...
行(“vn10”)。ToString例如可能由于某种原因是“a”而不是“a”。可能值得加入临时调试线,如:
Throw New Exception("[" & Row("vn10").ToString & "]")
或检查某些错误失败记录的长度。
答
没有什么似乎是你的代码错误,但如果你认为它的,因为它的速度太快了,用System.Threading.Thread.Sleep(milliseconds)
+0
嗯这没有工作 –
你是什么意思“不工作?”你是否浏览了代码,看看'For Each'中的代码是否正在运行,或者你的'If'代码块是否正在运行? – Jacob
当我instert一个断点,我没有看到任何事情发生,没有什么被添加到我的目的地表,这让我觉得存储过程不运行 –
当你在你的Sub的第一个语句设置断点时,断点是否被打?如果没有,那么问题可能是你没有正确设置你的事件处理程序。如果确实如此,那么你应该能够遍历代码并查看你的Select语句返回的内容。 – Jacob