网上看了点资料,说是由于多处数据库操作后,没有关闭数据库的操作导致的。
下面是我的代码,我基本都是这样关闭的,大家看看这样是不是确保关闭了。        ByteFX.Data.MySqlClient.MySqlConnection conn1 = new ByteFX.Data.MySqlClient.MySqlConnection(connString);        conn1.Open();
        ByteFX.Data.MySqlClient.MySqlCommand comm1 = new ByteFX.Data.MySqlClient.MySqlCommand();
        comm1.Connection = conn1;        sentSQL = "SELECT ID,Name  ";
        sentSQL = sentSQL + "FROM basic__info ";
        sentSQL = sentSQL + "WHERE ID = " + ID;        comm1.CommandText = SetGbk;        try
        {
            comm1.ExecuteNonQuery();            comm1.CommandText = sentSQL;
            ByteFX.Data.MySqlClient.MySqlDataReader rdr1 = comm1.ExecuteReader();            while (rdr1.Read())
            {
                uID = rdr1.GetInt32(0);
            }
        }
        finally
        {
            conn1.Close();
        }我把conn1.Clost()放在finally里面是不是可以确保每次都关闭了?
如果上面代码没有问题,那还可能是什么问题?请大家帮忙了。

解决方案 »

  1.   

    看看你的W3WP.EXE 多吗。占用CPU多吗、
      

  2.   

    W3WP就一个 确定就是这个导致CPU100%的
      

  3.   

    public static void closeConnecion(SqlConnection con)
      {
       if(con != null)
       {
        con.Close();
       }
      } 
      

  4.   

    还有索引我基本对照着每个SQL语句后面 WHERE部分都建立了 
    还是这样
      

  5.   

    使用数据库操作类
    using( ByteFX.Data.MySqlClient.MySqlConnection conn1 = new ByteFX.Data.MySqlClient.MySqlConnection(connString);)
    {}
    释放资源,是否还有其他问题,如死循环,页面错误等,看看内存占用情况
      

  6.   

    应该不是数据库连接的原因导致如果没关闭的话,会报连接池满的错抓个dump看下当前线程,分析线程堆栈,看在跑哪些代码
      

  7.   


    是不是使用using连conn1.Close都不用输入了?
    我记得好像是这样
      

  8.   

    conn.close() 这个不加问题也不是很大吧。很早前写ASP时经常忘加。也没出现过问题。
    但是像死循环,与页面错误(像SQL语句不正确) while 一个错误的记录集。这种导致CPU100%的可能相当大
      

  9.   

    using (SqlConnection sqlConn = new SqlConnection(connSting))
                    {
                        long Bticks = DateTime.Now.Ticks;
                        Console.WriteLine("open database {0}", Bticks);
                        sqlConn.Open();
                        string sql = "Select ContactName,CompanyName From Customers";
                        using (SqlCommand sqlCmd = new SqlCommand(sql, sqlConn))
                        {
                            using (SqlDataReader sqlRead = sqlCmd.ExecuteReader())
                            {
                                Console.WriteLine("Time:{0} Ticks", DateTime.Now.Ticks - Bticks);
                                while (sqlRead.Read())
                                {
                                    Console.WriteLine("Contact:{0,-30} Company:{1}", sqlRead.GetString(0), sqlRead.GetString(1));
                                }
                            }
                        }
                    }
    希望能帮到你,不使用了就尽早关闭.
      

  10.   

    还有两个小办法。一是作一下缓存,主要解决大量浏览对数据库的页面压力。这是积极的解决办法。可以采用两种缓存,整页缓存和局部缓存相结合,,效果应该 会很好。。另外一种办法不是很理想,但可以解决突发问题,,就是从新启动一下 iis.
    还有就是看一下数据是否还有需要建立索引的地方。。提高数据处理的速度。