conn.Open()与conn.Close()应该写在循环,还是应该写在循环内呀???
void ffi()
{
...
  for(int cd=0;cd<cclass.Length;cd++)
  {
                     string insertcmx="insert into ktb values('"+bj[cd].ToString().Trim()+"','"+rs[cd].ToString().Trim()+"')";
SqlCommand insmx=new SqlCommand(insertcmx,conn);
conn.Open();
inscmx.ExecuteNonQuery();
conn.Close();
  }
}void ffw()
{
...
  conn.Open();
  for(int cd=0;cd<cclass.Length;cd++)
  {
                     string insertcmx="insert into ktb values('"+bj[cd].ToString().Trim()+"','"+rs[cd].ToString().Trim()+"')";
SqlCommand insmx=new SqlCommand(insertcmx,conn);
inscmx.ExecuteNonQuery();
  }
  conn.Close();
}

解决方案 »

  1.   

    本人觉得这就好像开汽车,频繁的启动、刹车、启动、刹车、启动、刹车是很废油的,对汽车本身的磨损也越大,如果不是像F1赛车道那样的路面而又是短距离的话,那么建议一脚踩到底。也就是说后面的方法相对好一点。    **************个人见解,实属扯淡,仅供参考,学习+UP!*************
      

  2.   

    肯定是写在循环外的啊,要不执行一次就关闭数据库连接了,以后的都不会执行,所以也就无法起到For循环的作用了。
      

  3.   

    在第一部分的程序中每一个sql语句都要执行一次数据库的连接,而这种连接系统维护了一个对象池。每一个连接都先从对象池中取出,如果对象池中没有将创建新对象,并加入对象池。而对象池中的无用对象需要一定的时间后才能释放。所以如果你在短时间内使用的连接很多的话,就有可能造成对象池满员。你再需要连接的话就需要等待释放,而你等待的时间远比释放的时间短,这时系统就会告诉你连接超时,系统抛出异常了。第二种方法好些。当然也可以考虑用c#提供的xml来批量插入。
    个人意见,仅供参考。
      

  4.   

    conn.Open()与conn.Close()应该写在循环,还是应该写在循环内呀???
    out