【问题标题】:ConnectionString Database c#连接字符串数据库 c#
【发布时间】:2013-07-16 18:43:09
【问题描述】:

我正在创建一个数据库实用程序,但我似乎无法让我的连接字符串正确。

   SqlConnection conn = new SqlConnection();
   conn.ConnectionString =  
        "Data Source=.\\SQLExpress;" +
        "User Instance=true;" +
        "Integrated Security=true;" +
        "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";

我相信这是正确的格式。至于数据源,我的sql server是运行sql server 2008 R2的SQLExpress。我的数据库名为 ConfigurationData。我错过了什么吗?

当我运行它时,它会打开数据库——我认为它会打开数据库,因为它没有通过异常——但是当我尝试插入表时,它实际上并没有插入它,而是执行了命令。

conn.Open();
        try
        {

          SqlCommand comm = new SqlCommand("INSERT INTO Test " + "(id,number) " + "  VALUES(" + 10 + " , " + 12 + ")", conn);
          comm.ExecuteNonQuery();
            Console.WriteLine("Database is created successfully", "MyProgram");
        }
        catch (Exception ex)
        {

        }
        finally
        {
            if ((conn.State == ConnectionState.Open))
            {
                conn.Close();
            }
        }

【问题讨论】:

  • 您很可能每次构建/调试时都在复制 .mdf 文件,这会用您在解决方案中的副本覆盖程序正在使用的数据库。你能验证一下吗?
  • 如何检查是否插入
  • 我是数据库新手,他们检查的方式是,当我插入表时,我放置一个断点并打开表以检查它是否已插入
  • 打开SSMS并检查是否插入
  • 10 次中有 9 次是在两个不同的数据库上执行和验证的情况。我建议你打开 SSMS 并手动输入相同的插入语句

标签: c# .net sql database sql-server-2008-r2


【解决方案1】:

编辑 只记得我不久前回答过一个类似的问题。看看吧:

Why can't I insert data into local database (SQL Compact Edition) with C#?

我不认为这是连接字符串的问题。但供您参考,一个很好的参考网站是http://www.connectionstrings.com/sql-server-2008/

您将需要以下之一:

在连接到本地 SQL Server Express 实例时附加位于数据目录中的数据库文件

Server=.\SQLExpress;AttachDbFilename=|DataDirectory|mydbfile.mdf;Database=dbname;
Trusted_Connection=Yes;

在连接到本地 SQL Server Express 实例时附加数据库文件

Server=.\SQLExpress;AttachDbFilename=C:\MyFolder\MyDataFile.mdf;Database=dbname;
Trusted_Connection=Yes;

在本地 SQL Server Express 实例上使用用户实例 用户实例功能在连接期间动态创建一个新的 SQL Server 实例。这仅适用于本地 SQL Server 实例,并且仅在通过本地命名管道使用 Windows 身份验证进行连接时。目的是为了能够创建完整权限的SQL

将服务器实例分配给在计算机上具有有限管理权限的用户。

Data Source=.\SQLExpress;Integrated Security=true;
AttachDbFilename=C:\MyFolder\MyDataFile.mdf;User Instance=true;

要使用用户实例功能,您需要在 SQL Server 上启用它。这是通过执行以下命令来完成的:sp_configure 'user instances enabled', '1'。要禁用该功能,请执行 sp_configure 'user instances enabled', '0'。

【讨论】:

  • 它抛出错误说 .\ 无法识别的转义序列。如果是 .\\ 会被找到吗?
  • 不要使用“\\”。格式化字符串,如 @"C:\...\"
【解决方案2】:

尝试(本地)而不是点,点在Win XP中无法识别

conn.ConnectionString =  
        "Data Source=(local)\\SQLExpress;" +
        "User Instance=true;" +
        "Integrated Security=true;" +
        "AttachDbFilename=|DataDirectory|ConfigurationData.mdf;";

【讨论】:

    【解决方案3】:

    你的SQL语句也不对,你应该使用参数,但这是你应该有的

    SqlCommand comm = new SqlCommand("INSERT INTO Test (id, number)  VALUES('" + 10 + " ', '" + 12 + "')", conn);
    

    【讨论】:

      【解决方案4】:

      为什么不直接使用 SqlConnectionStringBuilder 类?:

      SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
      builder.DataSource = @"(local)\SQLExpress";
      builder.UserInstance = true;
      builder.IntegratedSecurity = true;
      builder.AttachDBFilename = "|DataDirectory|ConfigurationData.mdf";
      SqlConnection conn = new SqlConnection(builder.ConnectionString());
      

      输出:

          "Data Source=(local)\\SQLExpress;AttachDbFilename=|DataDirectory|ConfigurationData.mdf;Integrated Security=True;User Instance=True"
      

      【讨论】:

        【解决方案5】:

        其中一种方法是在 web.config 文件中添加连接字符串,如下所示:

        只需点击数据库浏览器上的数据库属性即可。在那里,您将在其属性中找到连接字符串。只需将其添加到下面的连接字符串中即可。

        <configuration>
            <connectionStrings>
                <add name="ConnectionName" connectionString="your connection string" providerName="System.Data.SqlClient"/>
            </connectionStrings>
        </configuration>
        

        然后在页面中你可以将它存储在字符串中或直接引用你的连接,如下所示:

        Connection con=new SqlConnection();
        con.ConnectionString=ConfigurationManager.ConnectionStrings["connString"].ToString();
        

        我怀疑您的插入语句没有正确声明。

        试试这个:

        SqlCommand comm = new SqlCommand("INSERT INTO Test (id,number) VALUES('10' ,'12')", con);
        

        这都是我的部分......希望它对你有帮助......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-30
          相关资源
          最近更新 更多