2014-04-01 105 views
0

淨,我試圖插入數據到訪問數據庫使用SQL,我有下面的代碼,當我嘗試執行,它會提示我一個錯誤消息,並突出顯示con.open()我不明白爲什麼它不工作,任何人都可以指導我。謝謝VB.NET SQL訪問插入語句

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

你拼錯了C:\ Databse \?也許C:\ Database \ – Fionnuala

+0

@Remou nope這真的就是我的文件夾的名字:( – user3476579

回答

4

標準的問題,當你在另外的精細SQL語句看到一個語法錯誤,找對底層數據庫保留關鍵字。

在你的情況下,單詞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" 

(線分裂的可讀性)

+0

+1這個。@OP請看這個鏈接保留關鍵字。http://technet.microsoft.com/en-us/庫/ ms189822.aspx – Codemunkeee

+0

我試圖按照你的意見,並有這個http://pastebin.com/J1kFBFT9,但它仍然給我的確切的錯誤「一個未處理的類型System.Data.OleDb.OleDbException異常發生在系統.Data.dll 附加信息:不是有效的文件名稱「消息並突出顯示con.Open()我仍然不明白爲什麼? – user3476579

+0

文件夾名稱中可能的拼寫錯誤?C:\ Databse',仍然丟失第七個參數 – Steve

0

我認爲你已經初始化「的OleDbConnection」的對象。

嘗試從數據庫的屬性窗口中獲取連接字符串(從服務器瀏覽器窗口右鍵單擊數據庫選擇屬性選項)。

當您打開的連接使用下列代碼:

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

希望它可以幫助你。