2012-12-31 46 views
2

我在Visual Studio Express 2012中为Web简单CRUD Web应用程序(库)创建学校项目。我从这个很好的教程启发 - http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1SQL Server Compact - 连接到SDF数据文件

现在我有连接到SQL Server精简版.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> 

当我运行一个应用程序,它抛出一个异常:

Exception Details: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

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

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

回答

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

参考
相关问题