保存另一个文件时INSERT INTO语法错误

时间:2013-02-13 01:50:00

标签: sql vb.net

我在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()

希望你能帮助我...

1 个答案:

答案 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的非常明确的错误。

Reference

This link将为您提供有关在VB.NET中连接数据库的正确方法的更多详细信息。