[英]VB.NET SQL ACCESS Insert Statement
NET,我正在尝试使用sql将数据插入到Access数据库中,我具有下面的代码,当我尝试执行时,它提示我一条错误消息并突出显示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
标准问题,当您在其他情况下还不错的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"
(为了便于阅读,对行进行了拆分)
我认为您已经初始化了“ OleDbConnection”对象。
尝试从数据库的“属性”窗口获取连接字符串(在“服务器资源管理器”窗口中,右键单击数据库的“选择属性”选项)。
当您打开连接时,请使用以下代码:
If con.State = ConnectionState.Closed Then
con.Open()
End If
希望对您有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.