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
答案 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
希望它对你有所帮助。