您正在尝试访问旧版本的SQL Server Compact Edition数据库

时间:2013-12-06 07:43:55

标签: c# sql sql-server-ce compact-database

我在尝试打开连接时遇到错误。我的DB.sdf文件位于我的应用程序文件夹

这里我存储了db.sdf

{

string ConnectionString=  new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location).DirectoryName + @"\APP_DATA\DB.sdf";


public int ExecuteNonQuery(string query){

        int res = -1;
        try
        {                
            using (SqlCeConnection conn = new SqlCeConnection(ConnectionString))
            {
                SqlCeCommand command = new SqlCeCommand(query, conn);
                command.CommandType = CommandType.Text;
                conn.Open();
                res = command.ExecuteNonQuery();
            }
        }
        catch (Exception e)
        {
            new Logs().TraceProcessError(e.Message);
        }
        return res;
    }

}

错误:

  

您正在尝试访问旧版本的SQL Server Compact   版数据库。如果这是SQL Server CE 1.0或2.0数据库,请运行   upgrade.exe。如果这是SQL Server Compact Edition 3.0或更高版本   数据库,运行Compact / Repair。 [Db版本= 3505053,请求   version = 3004180,文件名= D:\ DB.sdf]“

我正在使用SQL Server Compact 3.5。,VS2010,SQLServer 2008R2。

请帮忙。 感谢。

3 个答案:

答案 0 :(得分:0)

确保您(1)知道您的数据库是哪个版本的SQL Server CE,以及​​(2)您引用了与该SQL CE版本匹配的项目中的相应System.Data.SqlServerCe.DLL

答案 1 :(得分:0)

答案 2 :(得分:0)

从这里下载SQL Server紧凑型工具箱

https://sqlcetoolbox.codeplex.com/

针对您的数据库文件运行它并记下版本号(例如3.5)

进入visual studio,单击资源下的System.Data.SqlServerCe,然后单击属性下的。在属性中记下版本号(例如3.0)

如果库版本号较旧。下载SQL Server Compact安装程序并运行。 http://www.microsoft.com/en-IE/download/details.aspx?id=12264

安装完毕。从项目中删除对System.Data.SqlServerCe和System.Data.SqlClient的引用,并添加其等效的3.5版本。在我的系统上找到。

C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v3.5 \ Devices \ System.Data.SqlServerCe.dll

C:\ Program Files(x86)\ Microsoft SQL Server Compact Edition \ v3.5 \ Devices \ Client \ System.Data.SqlClient.dll

清理然后重建。就像我在评论中提到的那样,这在VS 2008上的某个时刻就会解开,所以如果你再次得到错误,请仔细检查路径是否如上所述。