2014-01-17 123 views
0

案例1:我不能插入數據到我的數據庫無法插入數據到數據庫MS-訪問VB

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ProjectVB.accdb") 

案例2:我可以將數據插入到我的數據庫

Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Admin\Documents\ProjectVB.accdb") 

數據庫已保存在我的項目中

conn.Open() 

      cmd.Connection = conn 
      cmd.Parameters.AddWithValue("@ac_ID", txtID.Text) 
      cmd.Parameters.AddWithValue("@ac_pass", txtPassword.Text) 
      cmd.Parameters.AddWithValue("@nation_ID", txtNoID.Text) 
      cmd.Parameters.AddWithValue("@fName", txtFirstName.Text) 
      cmd.Parameters.AddWithValue("@lName", txtLastName.Text) 
      cmd.Parameters.AddWithValue("@tel", txtTel.Text) 
      cmd.Parameters.AddWithValue("@province", cbNation.SelectedItem) 
      cmd.Parameters.AddWithValue("@regOn", dtRegOn.Text) 
      cmd.Parameters.AddWithValue("@status", txtStatus.Text) 
      cmd.Parameters.AddWithValue("@gender", cbGender.SelectedItem) 
      cmd.Parameters.AddWithValue("@location", txtLocation.Text) 
      cmd.Parameters.AddWithValue("@img", imgBuffer) 
      cmd.Parameters.AddWithValue("@rank", cbRank.SelectedItem) 
      cmd.CommandText = "INSERT INTO db_KJ_Profile VALUES(@ac_ID,@ac_pass,@nation_ID,@fName,@lName,@tel,@province,@regOn,@status,@gender,@location,@img,@rank)" 
      cmd.ExecuteNonQuery() 
+0

你可以從數據庫中讀取第一種情況嗎? – Rob

+0

是的。我可以閱讀但不能插入。 – user3197661

+1

您是否收到錯誤消息或只是在檢查數據庫時找不到插入的數據? – Steve

回答

2

在DataDirectory替換字符串的情況下,您應該檢查數據庫中的內容文件夾PROJECTFOLDER\BIN\DEBUG(或同一路徑的x86版本)。

這是由於在WinForms應用程序中,當在VS的調試會話中運行時,DataDirectory指向執行應用程序的文件夾(該應用程序的BIN \ DEBUG或BIN \ x86 \ DEBUG子文件夾項目文件夾)。

這很容易忽略,它始終是一個混亂的來源。
如果您的項目中列出了ACCDB文件,則會更糟糕。在這種情況下,數據庫項目有一個名爲Copy To The Output Directory的屬性。您應該檢查設置爲Copy If Newer or Copy Never而不是Copy Always,因爲在這種情況下,在調試會話的每次重新啓動時,數據庫的新副本將從項目文件夾複製(當然,沒有剛插入的數據)BIN \ DEBUG文件夾

+0

非常感謝。複製如果更新和我的數據庫已更新。 – user3197661