【问题标题】:Personalized database Connection string for C# applicationC# 应用程序的个性化数据库连接字符串
【发布时间】:2016-12-23 16:10:54
【问题描述】:

我正在尝试为我安装 C# 应用程序的机器创建一个个性化的数据库连接字符串。我已经使用 Visual Studio 创建了一个数据库,但它只将数据库的位置指向我的个人目录,这不是一般的东西。 现在,当我尝试发布应用程序并尝试将其安装在其他计算机上时,数据库给了我一个找不到它的错误,这是有道理的,因为连接字符串指向我的个人计算机目录。

这是我的部分代码:

 private void button13_Click_1(object sender, EventArgs e)
 {
     try
     {
         SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Hydrolec Inc\\PanelProgressLogger\\PanelProgress.mdf;Integrated Security=True;User Instance=True;");
         sda = new SqlDataAdapter(@"SELECT [Panel Progress].*
                                    FROM [Panel Progress]", con);
         fill_grid();
     }
     catch (Exception error)
     {
         label6.Text = error.Message;
     }
 }

谁能指导我找到正确的路径来解决这个问题并为安装数据库的每台计算机生成个性化的连接字符串?

【问题讨论】:

  • 这是一个很好的配置文件用例。将连接字符串放入 app.config 文件并在目标计算机上进行更改。您还可以使用设置来存储配置信息。
  • visual-studio 标签显示:“除非您对 Visual Studio 有特定问题,否则不要使用此标签,而不仅仅是编码问题。”我目前无法移除标签;有一个待定的编辑需要批准才能发生。
  • 我仍然看不到连接字符串指向您的计算机的位置。你的意思是文件路径可能会改变吗?
  • 感谢 D Stanley 的回复。但我确实尝试过并使用不同的连接字符串,例如:C\\Program Files\\Folder name\\project name\\PanelProgress.mdf;但它仍然没有通过并返回错误。
  • 艾米,下次我有问题时会记住这一点。

标签: c# sql database connection-string


【解决方案1】:

在您的 app.config 或 web.config 文件(与您相关的)中,在配置标签下添加以下连接字符串。

  <connectionStrings>
    <add name="DbConnection" connectionString="Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Hydrolec Inc\\PanelProgressLogger\\PanelProgress.mdf;Integrated Security=True;User Instance=True;" />
  </connectionStrings>

如果您已经有连接字符串部分,则仅添加

    <add name="DbConnection" connectionString="Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Program Files\\Hydrolec Inc\\PanelProgressLogger\\PanelProgress.mdf;Integrated Security=True;User Instance=True;" />

然后在您的 C# 代码中,您可以使用配置值,而不是硬编码连接字符串。

    string connectionString = ConfigurationManager.ConnectionStrings["DbConnection"].ConnectionString;

    private void button13_Click_1(object sender, EventArgs e)
    {
        try
        {
            SqlConnection con = new SqlConnection(connectionString);
            sda = new SqlDataAdapter(@"SELECT [Panel Progress].*
                                FROM [Panel Progress]", con);
            fill_grid();
        }
        catch (Exception error)
        {
            label6.Text = error.Message;
        }
    }

构建它。然后,当您将应用程序部署到另一台计算机时,您只需将 app.config 或 web.config(与您相关的任何一个)中的连接字符串更改为新文件位置,而无需更改硬编码值并重建应用程序再次。

【讨论】:

  • 感谢您的回复菩提。我试过你的方法,但它只适用于我的电脑。一旦我在其他计算机上安装应用程序,它就会给我以下错误“建立与 SQL 服务器的连接时发生网络相关或特定于实例的错误”我是否需要在我安装的每台计算机上安装 sql express 或服务器申请到?或者有什么方法可以解决这个问题?
  • 如果你分析连接字符串“Data Source=.\\SQLEXPRESS”,这意味着它引用了本地机器中的SQLExpress。 (点表示正在托管应用程序的机器。)您收到错误是因为该机器中没有 SQL 实例。如果您有网络环境,则可以通过将数据源更改为连接字符串中的“\\SQLExpress”来引用另一个可访问的数据库服务器。
猜你喜欢
  • 2016-04-09
  • 1970-01-01
  • 1970-01-01
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-27
相关资源
最近更新 更多