SQL insert语句语法错误

时间:2017-04-28 17:33:10

标签: vb.net

我试图在uname数据库字段中插入此名称。但似乎它没有做好。 Anhy帮助将不胜感激。我已经检查了所有可能的帮助来源。但它仍然是一样的。

Public Conn_OLE As New OleDb.OleDbConnection
Public myCMD As New OleDb.OleDbCommand
Public myDR As OleDb.OleDbDataReader

Public Sub ConOpenDB_OLE() 'Use to connect to a database via oledb
    Try
        Conn_OLE = New OleDb.OleDbConnection
        Conn_OLE.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\DHALIA\Downloads\ThesisSystem - Copy\ThesisSystem - Copy\Thesis_Try_1\ThesisDB.accdb;Jet OLEDB:Database Password=mdr_mvp"
        Conn_OLE.Open()
        Conn_OLE.Close()
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
    ConOpenDB_OLE()
    Conn_OLE.Open()
    myCMD.CommandText = "INSERT INTO USER ([uname],) VALUES (@uname)"

    myCMD.Parameters.AddWithValue("@uname", UsernameTextBox.Text)

    myCMD.Connection = Conn_OLE
    myCMD.ExecuteNonQuery()
    myCMD.Dispose()
    Conn_OLE.Close()

End Sub

1 个答案:

答案 0 :(得分:0)

USER是Access中的保留关键字,您需要使用方括号并在 uname 字段后修复拼写错误:(在列出的最后一个字段后不需要逗号)

CMD.CommandText = "INSERT INTO [USER] ([uname]) VALUES (@uname)" 

另外,我建议您将创建连接的代码更改为

Public Function ConOpenDB_OLE() As OleDbConnection
    Dim con = New OleDb.OleDbConnection
    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =C:\Users\DHALIA\Downloads\ThesisSystem - Copy\ThesisSystem - Copy\Thesis_Try_1\ThesisDB.accdb;Jet OLEDB:Database Password=mdr_mvp"
    con.Open()
    Return con

End Sub

这允许您编写此代码

Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
    Using con = ConOpenDB_OLE()
        myCMD.CommandText = "INSERT INTO [USER] ([uname]) VALUES (@uname)"
        myCMD.Parameters.AddWithValue("@uname", UsernameTextBox.Text)
        myCMD.Connection = con
        myCMD.ExecuteNonQuery()
    End Using
End Sub

通过这种方式,你不再需要一个全局变量来保持你的连接,你只需要它就可以得到它,并且使用using语句你也不会忘记正确的关闭和处理,如果是异常。