2011-08-17 46 views
1

這是我的「如果需要升級」代碼:MSSQLCE版本檢測及升級

 try 
     { 
      cn.Open(); 
     } 
     catch (System.Data.SqlServerCe.SqlCeInvalidDatabaseFormatException ex) 
     { 
      //Try to upgrade 
      SqlCeEngine engine = new SqlCeEngine(strConnection); 
      engine.Upgrade(strConnection); 
      cn.Open(); 

     } 

它的升級版本3.5分貝在實踐中V4.0。有沒有更好的解決方案?如果我檢測到安裝的引擎&正在使用的數據庫版本,那將會很好。

+0

重複後:http://stackoverflow.com/questions/4744527/how-can -i-upgrade-my-sql-server-ce-3-5-sdf -database-to-sql-server-ce-4-0 –

回答

3

文件版本檢測看到這個:How can I upgrade my Sql Server CE 3.5 sdf database to Sql Server CE 4.0?

而這種代碼可以檢測安裝在發動機版本:

internal static bool IsV40Installed() 
    { 
     try 
     { 
      System.Reflection.Assembly.Load("System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"); 
     } 
     catch (System.IO.FileNotFoundException) 
     { 
      return false; 
     } 
     try 
     { 
      var factory = System.Data.Common.DbProviderFactories.GetFactory("System.Data.SqlServerCe.4.0"); 
     } 
     catch (System.ArgumentException) 
     { 
      return false; 
     } 
     return true; 
    } 

    internal static bool IsV35Installed() 
    { 
     try 
     { 
      System.Reflection.Assembly.Load("System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"); 
     } 
     catch (System.IO.FileNotFoundException) 
     { 
      return false; 
     } 
     try 
     { 
      var factory = System.Data.Common.DbProviderFactories.GetFactory("System.Data.SqlServerCe.3.5"); 
     } 
     catch (System.ArgumentException) 
     { 
      return false; 
     } 
     return true; 
    } 
+0

是的,我確實看到了,再次感謝。 –

+0

問題沒有問如何檢測數據庫文件的版本?這就是我想知道如何去做的。 – HappyNomad

+0

看到回覆中的第一個鏈接 – ErikEJ