Vb.net插入行语句执行两次

时间:2013-02-18 06:55:07

标签: sql vb.net sqlcommand

在我的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,同样的问题也继续存在。使用参数化查询也有同样的问题。

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

1 个答案:

答案 0 :(得分: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

  3. 希望这会有所帮助。