VB.NET SQL ACCESS插入语句

时间:2014-04-01 08:52:01

标签: sql vb.net ms-access

net和我正在尝试使用sql将数据插入到访问数据库中,我有下面的代码,当我尝试执行时,它会提示我一条错误消息并突出显示con.open()我不明白为什么它是不工作,任何人都可以指导我。感谢

 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles AddBut.Click

        Dim dbProvider = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= c:\Databse\Company_db.accdb"
        Dim dbSource = "Data Source= C:\Databse\Company_db.accdb"

        Dim empNum As String
        Dim empFname As String
        Dim empLname As String
        Dim empDept As String
        Dim empStat As String
        Dim empYears As String


        empNum = eNumText.Text
        empFname = empFnameText.Text
        empLname = empLnameText.Text
        empDept = Deptd.Text
        empStat = Statd.Text
        empYears = yearstext.Text




        Dim sql = "INSERT INTO tbl_empinfo (EmpID, FirstName, LastName, Department, Status, Years " & _
           ") " & _
           "Values(empNum, empFname, empLname, empDept, empStat, empYears)"

        con.ConnectionString = dbProvider & dbSource
        Using cmd = New OleDb.OleDbCommand(sql, con)
            con.Open()
            cmd.Parameters.AddWithValue("EmpID", empNum)
            cmd.Parameters.AddWithValue("FirstName", empFname)
            cmd.Parameters.AddWithValue("LastName", empLname)
            cmd.Parameters.AddWithValue("Department", empDept)
            cmd.Parameters.AddWithValue("Status", empStat)
            cmd.Parameters.AddWithValue("Years", empYears)
            cmd.ExecuteNonQuery()

        End Using


        con.Close()
    End Sub

2 个答案:

答案 0 :(得分:3)

标准问题,当您在其他精细的SQL语句中看到语法错误时,请查找底层数据库的RESERVED KEYWORDS。

在您的情况下,POSITION一词是MS-ACCESS的保留关键字 把它放在方括号

之间
Dim sql = "INSERT INTO tbl_empinfo (EmpID, FirstName, LastName, Department, " & _ 
          "[Position], Status, Years) " & _ 
          "Values(empNum, empFname, empLname, empDept, empStat, empYears)"

但是,该查询中有另一个错误。您有7个要插入的字段,但只传递6个参数,只缺少POSITION字段的参数。

您还需要修复连接字符串。你写了

  con.ConnectionString = dbProvider & dbSource

但这会导致文件名无效

  "Provider=Microsoft.ACE.OLEDB.12.0; Data Source= 
   c:\Databse\Company_db.accdbData Source= C:\Databse\Company_db.accdb"

(为便于阅读而分割的行)

答案 1 :(得分:0)

我认为您已经初始化了“OleDbConnection”的对象。

尝试从数据库的“属性”窗口获取连接字符串(从“服务器资源管理器”窗口右键单击数据库选择属性选项)。

当您打开连接时,请使用以下代码:

    If con.State = ConnectionState.Closed Then
        con.Open()
    End If

希望它对你有所帮助。