2013-05-21 35 views
0

我目前正在保存訪問數據庫的值,並且我使用了Microsoft.Jet.OLEDB.4.0提供程序,因此我已將配置平臺模式從任何cpu遷移到x86在我的Visual Studio項目和它正常工作與x86平臺,但是當我使用NUnit啓動單元測試它不接受x86平臺和NUnit顯示錯誤Microsoft.Jet.OLEDB.4.0提供程序的替代解決方案x64位版本

「UnitTest_Finance.Test.Class1.InsertCashPayment: System.InvalidOperationException:該「Microsoft.Jet.OLEDB.4.0」提供程序未在本地計算機上註冊。「

現在我想用其他方式來處理這個錯誤,同時使用nunit執行單元測試。

這裏是我的參考代碼只

class RepairDLL 
    { 
     string dbConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/AutoRepairDB.mdb"; 


     //Method to Booking Value 
     public virtual bool Insert_Data_Repair_History(EntityClass ec) 
     { 
      bool isInsert = false; 

      //Connect to Database 
      OleDbConnection connection = new OleDbConnection(dbConn); 
      connection.Open(); 

      try 
      { 
       //Insert Customer Value 
       string sql = "INSERT into [Repair_History] (FirstName,LastName,City,State,VehicleNo,LienseNo,RepairDate,Summary,Charge) " 
           + "VALUES ('" + ec.R_firstName + "','" + ec.R_lastName + "','" + ec.R_city + "','" + ec.R_state + "','" + ec.R_vehicleNo + "','" + ec.R_licenseNo + "','" + ec.R_date + "','" + ec.R_summary + "','" + ec.R_charge + "')"; 
       OleDbCommand command = new OleDbCommand(sql, connection); 
       command.ExecuteNonQuery(); 
       connection.Close(); 

       isInsert = true; 
      } 
      catch 
      { 
       throw new Exception(); 

      } 
      finally 
      { 
       // Close the connection 
       if (connection != null) 
       { 
        connection.Close(); 
       } 
      } 

      return isInsert; 
     } 
    } 

回答

2

有Jet數據庫引擎中沒有64位版本,因此64位應用程序必須使用Access Database Engine(ACE的64位版本),並調用它像這樣

Provider=Microsoft.ACE.OLEDB.12.0; 

還有一個ACE的32位版本,因此使用ACE應用將包括32位和64位環境中工作。另請注意,Jet已棄用於新應用程序。

+0

This [link](https://social.msdn.microsoft.com/Forums/en-US/1d5c04c7-157f-4955-a14b-41d912d50a64/how-to-fix-error-the-microsoftaceoledb120-provider- is-not-registered-on-the-local-machine?forum = vstsdb)幫助我安裝Acess數據庫引擎(ACE)。 – sriram

相關問題