Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cmd As New SqlCommand("insert into accountant(acc_id,acc_name,payment_type,bill_no) values ('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "'", cn)
cn.Open()
cmd.ExecuteNonQuery()
cn.Close()
MsgBox("Accountant data inserted SucsessFully")
TextBox1.Clear()
TextBox2.Clear()
TextBox3.Clear()
TextBox4.Clear()
accouantant_Load(sender, e)
End Sub
问问题
776 次
1 回答
2
可能您的文本框中有一个单引号。
解决方案是使用参数来构建您的 sql 字符串。
如果使用参数,则不会出现字符串、日期或其他字段的解析问题,但是,参数最重要的是防止Sql Injection Attacks
Dim cmd As New SqlCommand("insert into accountant(acc_id,acc_name,payment_type,bill_no)" +
"values (@id, @name, @ptype, @bnum)", cn)
cn.Open()
cmd.Parameters.AddWithValue("@id",TextBox1.Text)
cmd.Parameters.AddWithValue("@name", TextBox2.Text)
cmd.Parameters.AddWithValue("@ptype" TextBox3.Text)
cmd.Parameters.AddWithValue("@bnum", TextBox4.Text)
cmd.ExecuteNonQuery()
cn.Close()
请注意,首先,我不知道您的 acc_id 字段是否是 Identity 列。在这种情况下,不要为其添加值。它将由数据库自动计算。
其次,我假设所有字段都是 varchar/nvarchar 或类似的类型。如果不是这种情况,那么您应该对参数值使用转换,例如
cmd.Parameters.AddWithValue("@bnum", Convert.ToInt32(TextBox4.Text))
于 2012-11-30T20:44:37.623 回答