SQL Server Compact - 与SDF数据文件的连接

时间:2012-12-31 13:35:03

标签: sql-server

我在Visual Studio Express 2012中创建Web简单CRUD Web应用程序(库)作为学校项目。我受到这个非常好的教程的启发 - http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1

现在我遇到连接到SQL Server Compact Edition .sdf数据文件的问题。

web.config我有这个连接字符串:

<connectionStrings>
    <add name="LibraryEntities"
     connectionString="Data Source=C:\Users\Administrator\Documents\Visual Studio 2012\Projects\2OBOP3_KU1\R10491\App_Data\R10491_library.sdf;"
     providerName="System.Data.SqlServerCe.4.0"/>
  </connectionStrings>

我为数据库连接测试创建了简单的ASPX文件:

<script runat="server">
  protected void Page_Load(object sender, EventArgs e)
  {
      using (SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings["LibraryEntities"].ToString()))
      {
          SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Writers", cn);
          cn.Open();
          SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
          rdr.Read();
          Response.Write(rdr[0].ToString()); //read a value
      }
  }
</script>

当我运行一个应用程序时,它会引发异常:

  

异常详细信息:System.Data.SqlClient.SqlException:A   建立时发生与网络相关或特定于实例的错误   与SQL Server的连接。服务器未找到或未找到   无障碍。验证实例名称是否正确以及SQL   服务器配置为允许远程连接。 (提供者:SQL   网络接口,错误:26 - 查找服务器/实例时出错   指定)

但是当我尝试连接到“Database Explorer”菜单(“Solution explorer”旁边)的“Database explorer”选项卡中的.sdf文件时,我连接成功。

所以我假设连接字符串应该有问题 - 不是吗?谢谢你的建议。

1 个答案:

答案 0 :(得分:4)

您正在连接到SQL Server Compact而不是SQL Server。

您应该使用SqlCeConnection而不是SqlConnection

  using System.Data.SqlServerCe;

  protected void Page_Load(object sender, EventArgs e)
  {
      using (SqlCeConnection cn = new SqlCeConnection(ConfigurationManager.ConnectionStrings["LibraryEntities"].ToString()))
      {
          SqlCeCommand cmd = new SqlCeCommand("SELECT COUNT(*) FROM Writers", cn);
          cn.Open();
          SqlCeDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
          rdr.Read();
          Response.Write(rdr[0].ToString()); //read a value
      }
  }

您还需要引用system.data.sqlserverce.dll