如何在整个winforms项目中使用单个连接字符串

我在我的项目中使用Winforms,MySQL和C#。 我在应用程序设置中使用连接字符串。

在每个新页面,我将声明一个连接字符串为public,并在连接中使用此字符串。

MySqlConnection connection = new MySqlConnection(MyConString); 

我想在整个应用程序中只声明一次MyConString。 这该怎么做? 怎么办?

我不认为您应该将您的连接字符串暴露给您的表单,他们不需要知道。 您可以使用简单工厂封装连接的创建。

 public class ConnectionFactory { public static MySqlConnection Create() { string connectionString = ConfigurationManager.AppSettings["..."]; MySqlConnection conection = new MySqlConnection(Config.ConnectionStr); connection.Open(); return connection; } } 

然后,当您需要表单中的连接时,您可以执行以下操作:

 private void button1_click(object sender, EventArg args) { using ( var connection = ConnectionFactory.Create() ) { connection.Execute("..."); } } 

您可以尝试以下内容:

 public static class Config { public static string ConnectionStr = ConfigurationManager.AppSettings["..."]; } 

然后,您可以在代码中使用它

 MySqlConnection connection = new MySqlConnection(Config.ConnectionStr); 

来自微软的Enterpise Library有一个很好的DataAccess部分,除了其他解决问题之外还有这个部分

您可能有一个单独的类来处理数据库并将连接字符串添加为字段。 每次要连接到数据库时,都可以使用该类。 此外,如果您需要,可以使用属性访问类外的字符串。

希望这可以帮助…

建议的方法可在MSDN文章“ 存储和检索连接字符串”中找到 。 以下示例稍加修改。

将连接字符串存储在app.config文件中后,您可以检索所有连接字符串,如下所示:

 static void GetConnectionStrings() { var settings = ConfigurationManager.ConnectionStrings; if (settings != null) { foreach(ConnectionStringSettings cs in settings) { Console.WriteLine(cs.Name); Console.WriteLine(cs.ProviderName); Console.WriteLine(cs.ConnectionString); } } } 

您也可以按名称获取连接字符串:

 // Returns null if the name is not found. static string GetConnectionStringByName(string name) { string returnValue = null; // Assume failure. var settings = ConfigurationManager.ConnectionStrings[name]; if (settings != null) { returnValue = settings.ConnectionString; } return returnValue; } 

这还使您能够保护连接字符串,以便您的数据库用户名和密码不以明文forms嵌入到应用程序集中。