我在vb中使用OLE数据库连接作为工资单系统。首先保存一个事务它将成功保存在数据库上,但是当我回来选择另一个帐户来计算其工资并尝试保存它时,它将返回一个错误,说“插入时出现语法错误”。
这是我的代码:
com5 = "INSERT INTO PayrollReport Values('" & empno.Text & "','" & ename.Text & "','" & startdate.Text & "','" & _
cutdate.Text & "'," & bpay.Text & "," & computation.Text & "," & grosse.Text & "," & _
lwop.Text & "," & tardiness.Text & "," & tax.Text & "," & sssp.Text & "," & _
philp.Text & "," & hdmfp.Text & "," & sssl.Text & "," & hdmfl.Text & "," & _
advance.Text & "," & taxdue.Text & "," & nete.Text & "," & deduction.Text & "," & _
netpay.Text & "," & Employee.Esss.Text & "," & Employee.Ephil.Text & "," & Employee.Ehdmf.Text & ")"
MsgBox(" The " & ename.Text & "'s Record has been save!")
connect5()
希望你能帮助我...
答案 0 :(得分:1)
如果您将代码转换为使用我在下面提到的内容,那么您的错误就会变得明显。
您确实需要使用以下代码将数据插入数据库。
参数化SQL - 尽管您没有使用存储过程,但仍需要使用SQL参数。 这不是导致错误的原因。您的原始代码将值直接从用户转储到SQL语句中。除非您使用SQL参数,否则恶意用户将窃取您的数据。
Dim CMD As New SqlCommand("Select * from MyTable where BookID = @BookID")
CMD.Parameters.Add("@BookID", SqlDbType.Int).Value = CInt(TXT_BookdID.Text)
请注意,您不仅可以建立占位符以将数据安全地提供到数据库中,还可以建立数据类型。这有助于捕获数据转换错误。例如,如果用户在期望整数的字段中键入4E,我发布的代码将给出一个关于无法转换为int的非常明确的错误。
This link将为您提供有关在VB.NET中连接数据库的正确方法的更多详细信息。