1

我正在为 vb 中的工资系统使用 OLE db 连接。在第一次保存交易时,它会成功保存在数据库中,但是当我回来选择另一个帐户来计算其工资并尝试保存时,它会返回一个错误,指出“插入时存在语法错误”。

这是我的代码:

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

希望你能帮我解决这个问题...

4

1 回答 1

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。

参考

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

于 2013-02-13T02:08:32.607 回答