我有以下代码:值不是在循环中被操作后在数据库中正确更新
Imports System.Data
Imports System.Data.OleDb
Partial Class Dummy
Inherits System.Web.UI.Page
Dim r As OleDbDataReader
Dim con As OleDb.OleDbConnection
Dim cmd As OleDbCommand
Dim cmd1 As OleDbCommand
Dim prev_ob As New List(Of Int64)
Dim cur_ob As Integer
Dim i As Integer = 0
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
con = New OleDb.OleDbConnection("provider=SQLOLEDB;data source=PC;initial catalog=DB1;integrated security=SSPI")
cmd = New OleDbCommand("select single_column from table1 where date_reqd=(SELECT CONVERT(VARCHAR(10),DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), -1),120))", con)
con.Open()
r = cmd.ExecuteReader
While r.Read
prev_ob.Add(Val(r.Item(0)))
End While
cmd = New OleDbCommand("select column1, column2, date_reqd from table1 where date_reqd=(select CONVERT(varchar(10), GETDATE(),120))", con)
r = cmd.ExecuteReader
While r.Read
For i As Integer = 0 To prev_ob.Count - 1
cur_ob = Val(prev_ob(i)) + Val(r.Item(0))
cmd1 = New OleDbCommand("update table1 set column4='" & cur_ob & "' where column2='" & r.Item(1) & "' and date_reqd='" & r.Item(2) & "'", con)
cmd1.ExecuteNonQuery()
i += 1
Exit For
Next
End While
con.Close()
End Sub
End Class
我现在面临的问题是,在更新正确只发生了许多第一值。所有其他值都会计算出来,并因此在我的表格中错误地更新。我几乎可以肯定,循环是造成问题的原因,但一直无法找到解决办法。请帮我纠正它。
你打电话退出没有检查任何条件? – Anuraj 2011-03-18 09:39:11
@vs dev:你好! :)退出仅仅是我试图让这个恶梦的工作变化的众多变化之一。不幸的是,我删除了所有其他变体,并粘贴了我的所有变体。我也曾尝试过'For Each',因为'对于prev_ob中的每个obj等等等等都没有奏效。在那种情况下,发生了什么事是它使用上一次计算的值更新了所有行的值。当我放置一个'MsgBox'时,它显示了正确的值。我去了数据库,看到它已经插入了最后的计算值。跆拳道是错的? : – CodingInCircles 2011-03-18 09:45:09
它看起来应该可以作为单个UPDATE语句来使用(是column1和single_column是否在同一列?) – 2011-03-18 09:55:43