在C#里大家是如何共用一个连接的?
以下代码有什么区别?
方式一:
在类中:
public class Public
{
public static SqlConnection Conn = new SqlConnection (System.Configuration.ConfigurationManager.AppSettings["ConnStr"].Trim ()) ;
....在其他页面是这样调用的
SqlCommand cm = new SqlCommand(str_Sql, Public.Conn);
...
Public.Conn.Close();
...方式二:
public class Public
{
public static SqlConnection Conn = new SqlConnection (System.Configuration.ConfigurationManager.AppSettings["ConnStr"].Trim ()) ;
..
public static SqlConnection MainConn
{
get
{
return Conn;
}
}
...
在其他页面是这样调用的
SqlCommand cm = new SqlCommand(str_Sql, Public.MainConn);
...
Public.MainConn.Close();按我的了解,方式一因为是静态调定义了Conn,如果在其他页面调用了,那当调用完关闭后,其他用户也在使用中的话,那么也数据也会被关闭。对于方式二,不知道会有会有问题呢?各位高手又是如何使用共用连接的?
以下代码有什么区别?
方式一:
在类中:
public class Public
{
public static SqlConnection Conn = new SqlConnection (System.Configuration.ConfigurationManager.AppSettings["ConnStr"].Trim ()) ;
....在其他页面是这样调用的
SqlCommand cm = new SqlCommand(str_Sql, Public.Conn);
...
Public.Conn.Close();
...方式二:
public class Public
{
public static SqlConnection Conn = new SqlConnection (System.Configuration.ConfigurationManager.AppSettings["ConnStr"].Trim ()) ;
..
public static SqlConnection MainConn
{
get
{
return Conn;
}
}
...
在其他页面是这样调用的
SqlCommand cm = new SqlCommand(str_Sql, Public.MainConn);
...
Public.MainConn.Close();按我的了解,方式一因为是静态调定义了Conn,如果在其他页面调用了,那当调用完关闭后,其他用户也在使用中的话,那么也数据也会被关闭。对于方式二,不知道会有会有问题呢?各位高手又是如何使用共用连接的?
不过好像有多余的感觉,用1的调用方法同样可以调用2的。
在类中需要的话,单独new一个SqlConnection出来就好了..不要用static..static会在系统中一直存在..并且你用static做变量,在webAPP中是会出现问题的...看看这个文章..http://lixianhuei.cnblogs.com/archive/2005/08/31/227274.aspx
public table GetTable()
{
SqlConnection cn=new SqlConnection...
...
...
}
连接字符串可以使用静态变量共享.
<appSettings>
<add key="ConnectionString" value="workstation id=MachineName;packet size=4096;user id=szum;data source=dbase;persist security info=True;initial catalog=dbname;password=password"/>
</appSettings> public static DataSet SqlExecuteDataSet(string sSql,string TableName)
{
string connectionString = ConfigurationSettings.AppSettings["ConnectionString"];
using(SqlConnection sqlcon=new SqlConnection(connectionString))
{
try
{
SqlDataAdapter sqlAdp = new SqlDataAdapter(sSql,sqlcon);
DataSet ds = new DataSet();
sqlcon.Open();
sqlAdp.Fill(ds,TableName);
return ds;
}
catch(Exception ex)
{
ErrMsg = ex.Message.Replace("\n","");
sqlcon.Close();
return new DataSet();
}
}
}