2

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

现在我在连接到 SQL Server Compact 版本.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:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

但是,当我尝试.sdf在“数据库资源管理器”菜单(“解决方案资源管理器”旁边)的“数据库资源管理器”选项卡中连接到我的文件时,我连接成功。

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

4

1 回答 1

4

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

你应该使用SqlCeConnectionnot 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

于 2012-12-31T13:36:54.360 回答