【问题标题】:c# windows, local database(sql server), connection string not working properlyc# windows,本地数据库(sql server),连接字符串无法正常工作
【发布时间】:2013-04-16 15:17:21
【问题描述】:

这是我的连接字符串

SqlConnection conn = new SqlConnection(@"Data Source=C:\Users\admin\documents\visual studio 2010\Projects\WFA1\WFA1\database.sdf");

我从属性中复制了它,我在前面添加了@,但没有改变任何东西。在构建和运行期间没有错误。但是当我点击插入按钮时,会出现以下错误。

“与 SQL Server 建立连接时发生网络相关或实例特定错误。找不到服务器或无法访问该服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。”

我尝试编辑连接字符串并使用数据目录而不是整个路径,但发生了同样的错误,我是 .net 新手,所以我无法弄清楚可能是什么原因。我试过谷歌,但我不知道那里的解决方案是否与我的问题有关。

提前致谢!

【问题讨论】:

  • 您是否在使用完整的 SQL Server 2008 版本(即.mdf.ldf 文件)- 或者您是否真的在使用 SQL Server Compact版本(使用*.sdf 文件)?您的问题和标签似乎相互矛盾...

标签: c# sql-server-2008 sql-server-ce connection-string


【解决方案1】:

您使用了错误类型的 SQL 连接。你应该使用SqlCeConnection 类:

SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\Users\admin\documents\visual studio 2010\Projects\WFA1\WFA1\database.sdf");

Here is a really good reference for SQL CE connection strings.

【讨论】:

    【解决方案2】:

    SQL Server 的数据源是机器名,而不是文件名。

    您应该添加对 SQL CE 程序集的引用,然后执行以下操作:

    SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\Users\admin\documents\visual studio 2010\Projects\WFA1\WFA1\database.sdf");
    

    【讨论】:

    • 我按原样复制了连接字符串。除了在前面添加@之外,我没有做任何更改。请详细说明答案。
    • 您可以从 .sdf 文件中看到他正在使用 MS SQL Server CE。为此,数据源一个文件名。
    • @Dan:是的,但是 SqlConnection 是用于 SQL Server NON-ce 的。
    • @Quandry 是的,但是 SqlConnection 不适用于 SDF 文件。这就是整个问题。
    • @Dan 是的,这正是我的意思,但显然,它必须完整地拼写出来。
    【解决方案3】:

    对于 MSSQL Server Compact Edition,您应该使用 SqlCeConnection 类。

    所以这应该有效:

    SqlCeConnection sqlConnection = new SqlCeConnection(@"Data Source=C:\Users\admin\documents\visual studio 2010\Projects\WFA1\WFA1\database.sdf");
    

    【讨论】:

      【解决方案4】:

      如下创建连接字符串:

      在命名空间中添加using System.Data.SqlServerCe;

      SqlCeConnection conn = new SqlCeConnection(@"Data Source=C:\Users\admin\documents\visual 
      studio 2010\Projects\WFA1\WFA1\database.sdf; Persist Security Info=False;");
      

      如果您的项目中有.sdf 文件,那么您可以使用:

      string strConnectionString ="Data Source=" + (System.IO.Path.GetDirectoryName(System.Reflection.Assembly.
      GetExecutingAssembly().GetName().CodeBase) + "\\database.sdf;Persist Security Info=False;";
      SqlCeConnectionconn = new SqlCeConnection(strConnectionString );
      

      【讨论】:

        猜你喜欢
        • 2019-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多