Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#中,所有类都要使用全局连接_C#_Sqlconnection - Fatal编程技术网

在c#中,所有类都要使用全局连接

在c#中,所有类都要使用全局连接,c#,sqlconnection,C#,Sqlconnection,我已将连接字符串保存到Properties.Settings.Default,我需要在所有类中使用sql连接,而不必每次都声明它,那么应该如何声明呢?每当您实例化一个新对象时,都会将对该连接的引用传递给它的构造函数。这可以在任何类中的静态变量的帮助下完成。您可以将此代码用于获取连接字符串 var defaultConn= new SqlConnection(ConfigurationManager.AppSettings["defaultConn"].ToString())

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

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

这可以在任何类中的静态变量的帮助下完成。

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

      var      defaultConn= new SqlConnection(ConfigurationManager.AppSettings["defaultConn"].ToString());

我在一个像这样的老项目中也有类似的设置。 值得注意的是,您应该始终为所有操作使用新的
SqlConnection
,因为

公共静态类SqlConnectionUtil
{
公共静态字符串DefaultConnectionString{get;private set;}
静态SqlConnectionUtil()
{
SQLConnectionUrl.DefaultConnectionString=
Properties.Settings.Default.TheConnectionString;
}
公共静态SqlConnection Create()
{
返回新的SqlConnection(SqlConnectionUtil.DefaultConnectionString);
}
}
然后你会像这样使用它

使用(var connection=SqlConnectionUtil.Create())
{
使用(var command=connection.CreateCommand())
{
//做事。
}
}

实际上,您不需要到处使用单个
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());
    }
}
您可以扩展该类以包含执行查询的其他方法


我强烈建议您使用like。

这不能用在static中,您是什么意思?顺便说一句,我编辑了一个输入错误,构造函数不应该被声明为
公共的
(我没有时间尝试编译它)。
这个。DefaultConnectionString
这个不应该在那里