[英]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.