在c#全局连接中,用于所有类

时间:2013-03-02 12:43:34

标签: c# sqlconnection

我有一个连接字符串保存到Properties.Settings.Default,我需要在所有类中使用sql连接而不必每次都声明它,那么应该如何声明呢?

5 个答案:

答案 0 :(得分:2)

可以在任何类

的STATIC变量的帮助下完成

答案 1 :(得分:2)

实际上,您无需在任何地方使用单个SqlConnection。更好的方法是创建一个类来管理您的数据访问。通常,这是您的数据访问层(DAL)的职责。 DAL是一组处理所有数据库相关内容的类。

为此目的,一个非常简单的类可能是这样的:

public class DatabaseManager
{
    private static DatabaseManager _instance;
    private DatabaseManager()
    {
    }

    static DatabaseManager()
    {
        _instance = new DatabaseManager();
    }

    public DatabaseManager Instance
    {
        get { return _instance; }
    }

    private string GetConnectionString()
    {
        return Properties.Settings.Default.MyConnectionString;
    }

    public SqlConnection CreateConnection()
    {
        return new SqlConnection(GetConnectionString());
    }
}

您可以扩展此类以包含执行查询的其他方法。

我强烈建议您使用ORM (Object-Relational Mapper)之类的Entity Framework

答案 2 :(得分:1)

每当您实例化一个新对象时,都会向其构造函数传递对该连接的引用。

答案 3 :(得分:1)

我在旧项目中设置了类似的东西。 值得注意的是,由于connection pooling,您应该始终为所有操作使用新的SqlConnection

public static class SqlConnectionUtil
{
    public static string DefaultConnectionString { get; private set; }

    static SqlConnectionUtil()
    {
        SqlConnectionUril.DefaultConnectionString = 
                Properties.Settings.Default.TheConnectionString;
    }

    public static SqlConnection Create()
    {
        return new SqlConnection(SqlConnectionUtil.DefaultConnectionString);
    }
}

然后你会像这样使用它。

using (var connection = SqlConnectionUtil.Create())
{
    using (var command = connection.CreateCommand())
    {
        // do things.
    }
}

答案 4 :(得分:0)

您可以将此代码用于获取连接字符串

      var      defaultConn= new SqlConnection(ConfigurationManager.AppSettings["defaultConn"].ToString());
相关问题