0

我正在使用此代码插入数据库,但每次插入多行时,有什么问题?

    Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim dob As DateTime = DateTime.Parse(Request.Form(TextBox6.UniqueID))

    Dim conString As String = ConfigurationManager.ConnectionStrings("sqlexpress").ConnectionString

    Using con As New System.Data.SqlClient.SqlConnection(conString)

        Dim com As New SqlCommand("INSERT INTO main (GroupID, Name, Description, ModeUD, StartNum, StartDate, Rate) VALUES (" & TextBox1.Text & ",'" & TextBox2.Text & "','" & TextBox3.Text & "'," & Me.DropDownList1.SelectedItem.Value & "," & TextBox4.Text & ",'" & dob & "'," & TextBox5.Text & ")", con)

        con.Open()
        com.ExecuteNonQuery()
        con.Close()





    End Using
End Sub
4

3 回答 3

4

您是否检查过您的代码块是否被多次调用?一种快速的方法是在里面放一个警告框,这样你就可以计算它运行的次数。

于 2013-08-16T14:18:18.037 回答
2

嗯……有很多问题。第一个是 SQL 注入的可能性,您应该使用命名参数。另一个是about这一行Dim com As New...也应该在一个Using子句中。

但是,那段代码中没有任何内容表明它插入了超过 1 条记录。我建议你在行上设置一个断点ExecuteNonQuery,看看发生了什么。

于 2013-08-16T14:18:48.643 回答
0

我已经检查并洞按钮单击执行了两次,我已将代码更改为这个并已解决,但我不知道为什么单击事件执行了两次:

 Dim i As Boolean = True


  Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSave.Click
    Dim dob As DateTime = DateTime.Parse(Request.Form(TextBox6.UniqueID))

    Dim conString As String = ConfigurationManager.ConnectionStrings("sqlexpress").ConnectionString





    Using con As New System.Data.SqlClient.SqlConnection(conString)
        con.Open()
        Using com As New SqlCommand("INSERT INTO main (GroupID, Name, Description, ModeUD, StartNum, StartDate, Rate) VALUES (" & TextBox1.Text & ",'" & TextBox2.Text & "','" & TextBox3.Text & "'," & Me.DropDownList1.SelectedItem.Value & "," & TextBox4.Text & ",'" & dob & "'," & TextBox5.Text & ")", con)
            If i = True Then





                com.ExecuteScalar()
                i = False
            End If

        End Using
        con.Close()

    End Using

End Sub
于 2013-08-16T14:51:21.523 回答