C# 公共静态sql连接安全吗

C# 公共静态sql连接安全吗,c#,sql,sql-server,database,C#,Sql,Sql Server,Database,我正在用c#开发一个windows服务,如果我的web应用程序能正常工作的话,我可能会在其中使用相同的方法。主服务使用一个用于自身的sqlconnection,该连接使用ConfigurationManager从app.config中检索,它创建几个不同类型的线程来运行多个任务。每个线程都有自己的连接(存储在类属性中) 我遇到的问题是,当我创建另一个对象类型时,我需要该对象能够使用OtherClass的连接访问DB。这个新对象是在OtherClass中创建和调用的,以便以后处理 是否可以从其他类

我正在用c#开发一个windows服务,如果我的web应用程序能正常工作的话,我可能会在其中使用相同的方法。主服务使用一个用于自身的sqlconnection,该连接使用ConfigurationManager从app.config中检索,它创建几个不同类型的线程来运行多个任务。每个线程都有自己的连接(存储在类属性中)

我遇到的问题是,当我创建另一个对象类型时,我需要该对象能够使用OtherClass的连接访问DB。这个新对象是在OtherClass中创建和调用的,以便以后处理

是否可以从其他类重新使用sql连接? 将sql连接字符串设置为公共静态是否安全?
我使用的设计是否不好?

将其传递给
其他类
构造函数

带有示例的详细信息

public partial class MainService : ServiceBase{
    private string SQLConnStr;
}

class OtherClass{
    private string connstr;
    public OtherClass(string _connstr) { this.connstr = _connstr; }
    public foo() { using(var conn = new SqlConnection(connstr) { ... } }
}

在.NET中每次创建
新的SqlConnection
都很好,因为有连接池。

是否将其传递给
其他类
构造函数

带有示例的详细信息

public partial class MainService : ServiceBase{
    private string SQLConnStr;
}

class OtherClass{
    private string connstr;
    public OtherClass(string _connstr) { this.connstr = _connstr; }
    public foo() { using(var conn = new SqlConnection(connstr) { ... } }
}

在.NET中每次创建
新的SqlConnection
都很好,因为有连接池。

是否将其传递给
其他类
构造函数

带有示例的详细信息

public partial class MainService : ServiceBase{
    private string SQLConnStr;
}

class OtherClass{
    private string connstr;
    public OtherClass(string _connstr) { this.connstr = _connstr; }
    public foo() { using(var conn = new SqlConnection(connstr) { ... } }
}

在.NET中每次创建
新的SqlConnection
都很好,因为有连接池。

是否将其传递给
其他类
构造函数

带有示例的详细信息

public partial class MainService : ServiceBase{
    private string SQLConnStr;
}

class OtherClass{
    private string connstr;
    public OtherClass(string _connstr) { this.connstr = _connstr; }
    public foo() { using(var conn = new SqlConnection(connstr) { ... } }
}

在.NET中每次创建
新的SqlConnection
都很好,因为有连接池。

您应该使用相应的配置机制。对于应用程序/windows服务,这将是
app.config
文件;对于web应用程序,这将是
web.config
文件;对于DLL,设置应该从DLL的
app.config
复制到应用程序的
app.config/web.config
,如本文多次所述(DLL不读取其配置文件,因此设置需要进入应用程序的配置文件)

也就是说:使用VisualStudio中的设置设计器只需添加一个新的连接字符串设置。如果需要,也可以将其添加到其他项目中

要在同一项目中使用类中的连接字符串,只需使用
Settings.Default.MyConnectionString
,假设该设置名为
MyConnectionString


DLL的另一个例外情况是:某些DLL不需要自己的设置,但需要访问数据库。在这种情况下,您可以将连接字符串或甚至
SqlConnection
传递给需要访问数据库的函数。

您应该使用相应的配置机制。对于应用程序/windows服务,这将对于
app.config
文件,对于web应用程序,它将是
web.config
文件;对于DLL,设置应该从DLL的
app.config
复制到应用程序的
app.config/web.config
,如下所述(DLL不读取其配置文件,因此设置需要进入应用程序的配置文件)

也就是说:使用VisualStudio中的设置设计器只需添加一个新的连接字符串设置。如果需要,也可以将其添加到其他项目中

要在同一项目中使用类中的连接字符串,只需使用
Settings.Default.MyConnectionString
,假设该设置名为
MyConnectionString


DLL的另一个例外情况是:某些DLL不需要自己的设置,但需要访问数据库。在这种情况下,您可以将连接字符串或甚至
SqlConnection
传递给需要访问数据库的函数。

您应该使用相应的配置机制。对于应用程序/windows服务,这将对于
app.config
文件,对于web应用程序,它将是
web.config
文件;对于DLL,设置应该从DLL的
app.config
复制到应用程序的
app.config/web.config
,如下所述(DLL不读取其配置文件,因此设置需要进入应用程序的配置文件)

也就是说:使用VisualStudio中的设置设计器只需添加一个新的连接字符串设置。如果需要,也可以将其添加到其他项目中

要在同一项目中使用类中的连接字符串,只需使用
Settings.Default.MyConnectionString
,假设该设置名为
MyConnectionString


DLL的另一个例外情况是:某些DLL不需要自己的设置,但需要访问数据库。在这种情况下,您可以将连接字符串或甚至
SqlConnection
传递给需要访问数据库的函数。

您应该使用相应的配置机制。对于应用程序/windows服务,这将对于
app.config
文件,对于web应用程序,它将是
web.config
文件;对于DLL,设置应该从DLL的
app.config
复制到应用程序的
app.config/web.config
,如下所述(DLL不读取其配置文件,因此设置需要进入应用程序的配置文件)

也就是说:使用VisualStudio中的设置设计器只需添加一个新的连接字符串设置。如果需要,也可以将其添加到其他项目中

要在同一项目中使用类中的连接字符串,只需使用
Settings.Default.MyConnectionString
,假设该设置名为
MyConnectionString

DLL的另一个例外:有些DLL不需要自己的设置,但需要访问数据库。在这种情况下,您可以传递连接字符串,甚至是
SqlConnection<