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