MSSQLCE版本检测&升级

时间:2011-08-17 08:18:22

标签: c# sql-server-ce

这是我的“如果需要升级”代码:

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

        }

它在实践中将v3.5 db升级到v4.0。有没有更好的解决方案?如果我检测到已安装的发动机和发动机,那就太好了。正在使用的数据库版本。

1 个答案:

答案 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;
    }