关于SqlConnection连接,关闭的问题
这是微软petshop 4.0中的两个方法:
  public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) {
             SqlCommand cmd = new SqlCommand();
             PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
             int val = cmd.ExecuteNonQuery();
             cmd.Parameters.Clear();
             return val;
         }  
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) {
             if (conn.State != ConnectionState.Open)
                 conn.Open();
             cmd.Connection = conn;
             cmd.CommandText = cmdText;
             if (trans != null)
                 cmd.Transaction = trans;
             cmd.CommandType = cmdType;
             if (cmdParms != null) {
                 foreach (SqlParameter parm in cmdParms)
                     cmd.Parameters.Add(parm);
             }
  没有关闭连接,测试了下,我调用ExecuteNonQuery后,连接还是打开的,是不是故意这么设计的,还是什么原因
------解决方案--------------------应该有关闭的地方吧
------解决方案--------------------自己 using了
------解决方案--------------------肯定是自己手动关闭~
也许你要用那个conn还做点别的事,如果PrepareCommand给你关闭了,你不又要打开?
------解决方案--------------------.net里面有内存回收机制的,在petshop里面没有显式调用close,因为内存回收,会自动把没有的空闲的conntion关闭掉,所以不用担心。另外还有数据库连接池这个功能。可以上网找找帮助了解一下。欢迎在广东工作的技术员和美工加入QQ群1884645。
------解决方案--------------------关闭之后别忘了释放缓存
con.Close();
con.Dispose();//释放con的缓存
cmd也要释放
------解决方案--------------------自己写个异常扑获,try下,在里面写关闭。