用get访问器设置sqlconnection好吗?需要关闭SqlConnection对象吗?如果需要那在程序的那里关闭回比较好一点.我认为应该在应用程序的销毁或者是说结束时关闭,但不知道具体在哪个类里实现...
代码事例:c# 
private SqlConnection conn; 
public static SqlConnection Conn 

get 

string connectionString = 
"server=.\\sqlexpress;uid=sa;pwd=sa;database=pubs"; 
if(conn == null) 

Sqlconnection conn = new SqlConnection(connectionString); 
conn.open(); 

else if(conn.state == ConnectionState.close) 

conn.open(); 

else if(conn.state == ConnectionState.brook)//brook单词可能打错了 

conn.close(); 
conn.open(); 

return conn; 

} //调用的事例 
public bool loginUser() 

SqlCommand cmd = new SqlCommand("sql语句",Conn);//Conn就是调用get访问 器 
cmd.exec();//单词记不住了 }

解决方案 »

  1.   

    connet 一般不用的时候,再关闭吧。用的时候保持打开。
      

  2.   

    放到属性里和放到函数里都是一样的,connection一般用完就关了,因为数据库连接由数据库连接池维护所以每次创建连接代价不是很高。
      

  3.   

    自己看吧!
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    /// <summary>
    /// SQlData 的摘要说明
    /// </summary>
    public class SQlData
    {
    public SQlData()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
        private static SQlData _instance;    public static SQlData GetInstance()
        { 
          if(_instance==null)
          {
              _instance = new SQlData();
          }
          return _instance;
        }
        public static SqlConnection ReturnConn()
        {
            string strConn = System.Configuration.ConfigurationManager.AppSettings["ConnectionString"];
            SqlConnection Conn = new SqlConnection(strConn);
            if (Conn.State.Equals(ConnectionState.Closed))
            {
                Conn.Open();
            }
            return Conn;
        }
        public static SqlCommand CreateCmd(string procName, SqlParameter[] prams, SqlConnection Conn)
        {
            SqlConnection SqlConn = Conn;
            if (SqlConn.State.Equals(ConnectionState.Closed))
            {
                SqlConn.Open();
            }
            SqlCommand Cmd = new SqlCommand();
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Connection = SqlConn;
            Cmd.CommandText = procName;
            if (prams != null)
            {
                foreach (SqlParameter parameter in prams)
                {
                    if (parameter != null)
                    {
                        Cmd.Parameters.Add(parameter);
                    }
                }
            }
            return Cmd;
        }
        public static SqlCommand CreateCmd(string procName, SqlParameter[] prams)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = new SqlCommand();
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Connection = Conn;
            Cmd.CommandText = procName;
            if (prams != null)
            {
                foreach (SqlParameter parameter in prams)
                {
                    if (parameter != null)
                    {
                        Cmd.Parameters.Add(parameter);
                    }
                }
            }
            return Cmd;
        }
        public static SqlCommand CreateCmd(string procName,SqlConnection Conn)
        {
            SqlConnection SqlConn = Conn;
            if (SqlConn.State.Equals(ConnectionState.Closed))
            {
                SqlConn.Open();
            }
            SqlCommand Cmd = new SqlCommand();
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Connection = SqlConn;
            Cmd.CommandText = procName;
            return Cmd;
        }
        public static SqlCommand CreateCmd(string procName)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = new SqlCommand();
            Cmd.CommandType = CommandType.StoredProcedure;
            Cmd.Connection = Conn;
            Cmd.CommandText = procName;
            return Cmd;
        }
        public static SqlDataReader RunProcGetReader(string procName, SqlParameter[] prams)
        {
            SqlCommand Cmd = CreateCmd(procName, prams);
            SqlDataReader Dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return Dr;
        }
        public static SqlDataReader RunProcGetReader(string procName, SqlParameter[] prams, SqlConnection Conn)
        {
            SqlCommand Cmd = CreateCmd(procName, prams,Conn);
            SqlDataReader Dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return Dr;
        }
        public static SqlDataReader RunProcGetReader(string procName, SqlConnection Conn)
        {
            SqlCommand Cmd = CreateCmd(procName,Conn);
            SqlDataReader Dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return Dr;
        }
        public static SqlDataReader RunProcGetReader(string procName)
        {
            SqlCommand Cmd = CreateCmd(procName);
            SqlDataReader Dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
            return Dr;
        }
        public static DataTable RunProcGetTable(string procName, SqlParameter[] prams, SqlConnection Conn)
        {
            SqlCommand Cmd = CreateCmd(procName, prams, Conn);
            SqlDataAdapter Dtr = new SqlDataAdapter();
            DataSet Ds = new DataSet();
            Dtr.SelectCommand = Cmd;
            Dtr.Fill(Ds);
            DataTable Dt = Ds.Tables[0];
            Conn.Close();
            return Dt;
        }
        public static DataTable RunProcGetTable(string procName)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName, Conn);
            SqlDataAdapter Dtr = new SqlDataAdapter();
            DataSet Ds = new DataSet();
            Dtr.SelectCommand = Cmd;
            Dtr.Fill(Ds);
            DataTable Dt = Ds.Tables[0];
            Conn.Close();
            return Dt;
        }
        public static DataTable RunProcGetTable(string procName, SqlParameter[] prams)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName,prams,Conn);
            SqlDataAdapter Dtr = new SqlDataAdapter();
            DataSet Ds = new DataSet();
            Dtr.SelectCommand = Cmd;
            Dtr.Fill(Ds);
            DataTable Dt = Ds.Tables[0];
            Conn.Close();
            return Dt;
        }
        public static int RunExecute(string procName)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName,Conn);
            int intResult = Cmd.ExecuteNonQuery();
            Conn.Close();
            return intResult;
        }
        public static int RunExecute(string procName,SqlParameter[] prams)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName,prams,Conn);
            int intResult = Cmd.ExecuteNonQuery();
            Conn.Close();
            return intResult;
        }
        public void RunNonExecute(string procName, SqlParameter[] prams)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName, prams, Conn);
            Cmd.ExecuteNonQuery();
            Conn.Close();
          
        }
        public void RunNonExecute(string procName)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName,Conn);
            Cmd.ExecuteNonQuery();
            Conn.Close();    }
        public static int RunExecuteScalar(string procName)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName, Conn);
            int intResult = Convert.ToInt32(Cmd.ExecuteScalar());
            Conn.Close();
            return intResult;
        }
        public static int RunExecuteScalar(string procName, SqlParameter[] prams)
        {
            SqlConnection Conn = ReturnConn();
            SqlCommand Cmd = CreateCmd(procName, prams, Conn);
            int intResult =Convert.ToInt32(Cmd.ExecuteScalar());
            Conn.Close();
            return intResult;
        }
    }
      

  4.   

    在get或set完成前(即get或set配对的最后一个关闭的大括号之前就应该关闭连接,并释放资源)
      

  5.   

    在get或set完成前(即get或set配对的最后一个关闭的大括号之前就应该关闭连接,并释放资源)