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

本文关键字:单个 连接 字符串 项目 winforms | 更新日期: 2023-09-27 18:04:18

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

在每个新的页面,我将声明一个连接字符串为公共的,并在连接中使用这个字符串。

MySqlConnection connection = new MySqlConnection(MyConString);

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

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

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

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

当你需要Form中的连接时,你可以这样做:

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);

Microsoft enterprise 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;
}

这也为您提供了保护连接字符串的能力,以便您的数据库用户名&密码不会以明文形式嵌入到应用程序程序集中。