0

我的连接字符串有问题,我有一个带有字符串参数的 Execute 方法来接收查询,

public class Create_Connection
{
 public static readonly string CONN_STRING =
 ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString;
 public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING);
 public static readonly SqlConnection CONN = new SqlConnection(CONN_STRING);

  public DataSet ExecuteSql(string sql)
  {
    SqlDataAdapter da;
    DataSet ds;

    if (CONN.State == ConnectionState.Open)
      CONN.Close();
    CONN.Open();
    da = new SqlDataAdapter(sql, CONN_STRING);
    ds = new DataSet();
    da.Fill(ds);
    CONN.Dispose();
    CONN.Close();
    return ds;
   }

 }

当我第一次使用它时它会起作用,但是当第二次查询时使用 Execute 方法时,我的程序停止并给我这个 masseg:“ConnectionString 属性尚未初始化”!和 InnerException :“空”!

当它第一次工作时怎么可能,然后当连接字符串为“静态只读”时改变!

并提前感谢:) ..

4

1 回答 1

0

不要使用静态 SqlCONnection。

 public class Create_Connection
    {
       public static readonly string CONN_STRING = ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString;
       public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING);
     //public static readonly SqlConnection CONN = new SqlConnection(CONN_STRING);

        public DataSet ExecuteSql(string sql)
        {
            SqlDataAdapter da;
            DataSet ds;

            using (var CONN = new SqlConnection(CONN_STRING)) {

                //if (CONN.State == ConnectionState.Open)
                //    CONN.Close();
                CONN.Open();
                da = new SqlDataAdapter(sql, CONN_STRING);
                ds = new DataSet();
                da.Fill(ds);
                //CONN.Dispose();
                CONN.Close();
            }
            return ds;
        }
    }

并在使用时创建变量。像这样

public class Create_Connection
    {
        public static readonly string CONN_STRING = ConfigurationManager.ConnectionStrings["TaskConnectionString"].ConnectionString;
        public static readonly SqlConnection SqlConn = new SqlConnection(CONN_STRING);

        public DataSet ExecuteSql(string sql)
        {
            var ds = new DataSet();
            using (var CONN = new SqlConnection(CONN_STRING)) {
                CONN.Open();
                var da = new SqlDataAdapter(sql, CONN_STRING);
                da.Fill(ds);
                CONN.Close();
            }
            return ds;
        }
    }
于 2013-10-24T10:38:17.637 回答