2

在我的 vb.net 应用程序中,我需要将一些数据从一个表备份到另一个表。这是我的代码

con2.Open()
txt2 = "select * from pension where empno='" & empno & "' ORDER BY year"
cmd2 = New SqlCommand(txt2, con2)
reader2 = cmd2.ExecuteReader()
While reader2.Read
    yr = reader2("year")
    totpension = reader2("total")
    If dr <> yr Then
        dcrg = 0
        comm = 0
    End If
    tot1 = dcrg + comm + totpension
    con3.Open()
    txt1 = "Insert into over1 values('" & empno & "','" & name & "','" & yr & "','" & dcrg & "', '" & comm & "','" & totpension & "','" & tot1 & "')"
    cmd3 = New SqlCommand(txt1, con3)
    cmd3.ExecuteNonQuery()
    con3.Close()
End While
reader2.Close()
con2.Close()

问题是它插入每条记录两次,我删除了 ORDER BY,同样的问题仍然存在。使用参数化查询也有同样的问题。

有人可以解释我的代码中有什么问题以及如何解决吗?提前致谢

4

1 回答 1

0

多件事,
如果您在养老金表中有每个员工的单一记录,则
使用if reader2.Read而不是while reader2.Read

如果问题仍然存在那么问题是您正在执行此方法两次。问题是如何?

  1. 如果是一种方法。那么你可能会调用这个方法两次
  2. 如果它是一个事件,那么您可能正在处理此事件两次
    因此,请检查触发该事件的控制标记是否在那里调用该事件。像这样

    <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click"/>
    

    并检查事件的Handled属性

    Private Sub btnSubmit_Click(ByVal sender As Object, _
     ByVal e As StartEventArgs) Handles btnSubmit.Click
    

    如果您定义了OnClick属性,则必须Handles btnSubmit.Click从事件中删除。

希望这会有所帮助。

于 2013-02-18T10:36:22.367 回答