0
一个循环内
余米试图插入/更新多条记录,并在表变更后返回记录而我会用下面的代码,SqlDataReader的在vb.NET
Using cmd As New SqlCommand("TblRegJoinDynHdlr", con)
cmd.CommandType = CommandType.StoredProcedure
Dim Data = PtRegData(0).PartnerData
For i As Integer = 0 To Data.Count - 1
cmd.Parameters.Clear()
If (String.IsNullOrEmpty(Data(i).RecID)) Then
cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = DBNull.Value
Else
cmd.Parameters.Add("@RecID", SqlDbType.Int).Value = Convert.ToInt32(Data(i).RecID)
End If
If (String.IsNullOrEmpty(Data(i).PtFilenum)) Then
cmd.Parameters.Add("@ptfilenum", SqlDbType.Int).Value = DBNull.Value
Else
cmd.Parameters.Add("@ptfilenum", SqlDbType.Int).Value = Convert.ToInt32(Data(i).PtFilenum)
End If
If (String.IsNullOrEmpty(Data(i).PrtFilenum)) Then
cmd.Parameters.Add("@prfilenum", SqlDbType.Int).Value = DBNull.Value
Else
cmd.Parameters.Add("@prfilenum", SqlDbType.Int).Value = Convert.ToInt32(Data(i).PrtFilenum)
End If
cmd.Parameters.Add("@PrtStatus", SqlDbType.Int).Value = (Data(i).PrtStatus)
con.Open()
Using sdr As SqlDataReader = cmd.ExecuteReader()
While sdr.Read()
Prtdata.Add(New PartnerData() With { _
.RecID = sdr("RecID").ToString(), _
.PrtFilenum = sdr("PrtFilenum").ToString(), _
.PtFilenum = sdr("PtFilenum").ToString(), _
.FullName = sdr("FullName").ToString(), _
.PrtStatus = sdr("PrtStatus").ToString(), _
.DOB = sdr("DOB").ToString() _
})
End While
End Using
con.Close()
Next
con.Dispose()
End Using
我的问题 如果我离开循环内SqlDataReader中,所有记录都正确更新,但我得到的数据作为NX 2,如果我离开它的循环,我得到不更新我的数据,但记录外/插入正确 任何帮助吗?
这是一个有点混乱,但我觉得你的循环内您要添加的回报插入到循环中使用的相同集合中,复制数据。 ExecuteReader是必要的吗?你不能使用ExecuteNonQuery吗?至少,您不应将结果添加到循环使用的相同集合中。 –
@DennesTorres,是的,我需要的读者,我在做的ExecuteNonQuery之前,但后来我需要填充列表,所以我用一个读者 – JSON
我不能使用循环建立的名单,我需要从对数据服务器读取一些数据插入,,,是有可能解决它与这个例子,因为我添加一个新的程序只是读取数据分开形成循环功能 – JSON