如何在整个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嵌入到应用程序集中。