2017-08-01 37 views
0

現在我使用Access數據庫作爲虛擬ODBC數據庫(所以我不會在開發期間損壞任何有價值的信息),並且在插入記錄時遇到問題。ODBC插入不能在Access數據庫上工作

我可以從該DB就好了Insert命令經歷,但是當我嘗試讀取記錄回它不存在

using (OdbcConnection conn = new OdbcConnection(@"Driver={Microsoft Access Driver (*.mdb, *.accdb)}; Dbq=" + Directory.GetCurrentDirectory() + @"\Setup DB.accdb")) 
    { 
     conn.Open(); 
     int ID; 

     //Autoincrement doesn't work, so new ID is LASTID++ 
     using (OdbcCommand query = new OdbcCommand("SELECT MAX(ID) AS LASTID FROM Setups", conn)) 
     { 
      using (var reader = query.ExecuteReader()) 
      { 
       reader.Read(); 
       ID = int.Parse(reader["LASTID"].ToString()) + 1; 
      } 
     } 

     transaction = conn.BeginTransaction(); 
     using (OdbcCommand insert = new OdbcCommand("INSERT INTO Setups (ID, PartNumber,LeafSide,Width) VALUES (?, ?, ?, ?)", conn)) 
     { 
      //If ID is left out^then an error is thrown about the ID being null 
      insert.Parameters.Add("@ID", OdbcType.Int).Value = ID; 
      insert.Parameters.Add("@PartNumber", OdbcType.VarChar).Value = PartNo; 
      insert.Parameters.Add("@LeafSide", OdbcType.VarChar).Value = AorB; 
      insert.Parameters.Add("@Width", OdbcType.Double).Value = Width; 

      insert.Transaction = transaction; 

      //This temp shows that 1 record is modified 
      int temp = insert.ExecuteNonQuery(); 

      transaction.Commit(); 
     } 
    } 
    //try catch and rollback removed for display 

我有一種感覺,我想的東西真正讀懂簡單,但對於我的生活,我無法弄清楚它是什麼。

回答

0

事實證明,我錯過了一件簡單的事情。由於我使用Directory.GetCurrentDirectory()+ @「\ Setup DB.accdb」作爲我的位置,因此我正在修改/ bin/Debug文件夾中的數據庫而不是正在檢查的數據庫。

感謝this answer讓我認識到這一點:

如果你的C#代碼的執行沒有任何例外,它更新數據庫也一樣,也許你正在使用AttachDbFilename = | DataDirectory目錄| \ yourDB.mdf在你的ConnectionString表示更新的數據庫位於項目的子文件夾BIN \ DEBUG文件夾中。