首页新闻找找看学习计划

ConnectionString 属性尚未初始化。怎么解决??

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-14 11:07

我在web.config中的数据库连接是

  <appSettings>

    <add key="ConnectionString" value="Data Source=.;database=SystemDB;UID=sa;Password=123456;Persist Security Info=True;"/>
  </appSettings>

 

得到的时候是这样的

protected static SqlConnection myconn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);

 

但问题是这样的  登陆能行但是进去后多点击得几下,就出现ConnectionString 属性尚未初始化。这个问题咋搞哦???

沅江的主页 沅江 | 初学一级 | 园豆:151
提问于:2012-08-14 10:00
< >
分享
最佳答案
1

这段代码没有错,错的应该是调用的地方。

使用 SqlConnection的时候,不要把它定义为 static 的,随时使用,随时 new 。

收获园豆:5
Launcher | 高人七级 |园豆:45040 | 2012-08-14 10:04

您的意思是说在每个地方使用都重新定义,,,,

沅江 | 园豆:151 (初学一级) | 2012-08-14 10:08

@沅江: 不知道你的代码结构是怎么样,并不一定要重新定义。这得看你对代码的理解能力。

Launcher | 园豆:45040 (高人七级) | 2012-08-14 10:13

@程序猿.码农: 我现在在程序里主要用的SqlCommand和SqlDataAdapter这两个来对数据的操作,但不知道是哪儿出问题了,还请你指点啊?我以前是做php和asp,刚学没多久。

沅江 | 园豆:151 (初学一级) | 2012-08-14 10:20

@沅江: 说实话,你说的都没啥用处,这跟你用了哪个类没啥关系,而要看你代码的结构。

Launcher | 园豆:45040 (高人七级) | 2012-08-14 10:24

@程序猿.码农: 你看下这段代码吧

 protected static SqlConnection myconn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);

    //打开数据库
    private static void openConn()
    {

        if (myconn.State == ConnectionState.Closed)
        {
            myconn.Open();
        }
    }
    //关闭数据库
    private static void closeConn()
    {
        if (myconn.State == ConnectionState.Open)
        {
            myconn.Close();

        }
    }

    //关闭数据库
    public static void cConn()
    {
        if (myconn.State == ConnectionState.Open)
        {
            myconn.Close();

        }
    }
    //返回数据集
    public static DataSet GreatDs(string sql)
    {

        SqlConnection conn = myconn;
        closeConn();
        SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        sda.Fill(ds);
        return ds;
    }

    //取得指定游标内数据集//取对应数据  StartIndex为起始游标 PageSize为显示条数 主要用于分页
    public static DataSet GreatDs(string sql, int StartIndex, int PageSize, string tablename)
    {
        closeConn();
        SqlDataAdapter Dar = new SqlDataAdapter(sql, myconn);
        DataSet ds = new DataSet();
        Dar.Fill(ds, StartIndex, PageSize, tablename);
        return ds;
    }
    //执行无返回sql语句
    public static void DoSql(string sql)
    {
      
        try
        {
            openConn();
            SqlCommand cmd = new SqlCommand(sql, myconn);
            cmd.ExecuteNonQuery();
            closeConn();
        }
        catch
        {

        }
        closeConn();
    }

沅江 | 园豆:151 (初学一级) | 2012-08-14 10:27

@沅江: 所有代码改成这样:

public static DataSet GreatDs(string sql)
{

  using(SqlConnection conn = new SqlConnecton(ConfigurationManager.AppSettings["ConnectionString"]))

  {

     conn.Open();


     SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
     DataSet ds = new DataSet();
     sda.Fill(ds);
     return ds;
  }

}

Launcher | 园豆:45040 (高人七级) | 2012-08-14 10:35
其他回答(1)
0

protected 关键字将限定变量的使用范围,你可以定义成 public static

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-08-14 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册