为了账号安全,请及时绑定邮箱和手机立即绑定

关于SqlConnection连接,关闭的问题

关于SqlConnection连接,关闭的问题

侃侃尔雅 2018-12-06 20:06:39
这是微软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后,连接还是打开的,是不是故意这么设计,还是什么原因
查看完整描述

4 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

因为是外部传入的SqlConnection,他不确定你是否需要这个连接继续开着,所以没关闭,设计使然 你要他自动关闭,应该传一个string作为连接字符串进去,这样的话他会自己开个conn,然后标记一个似乎叫mustClose的变量为true,到时候就会关了
查看完整回答
反对 回复 2019-01-21
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

SqlConnection 不要用全局或静态或单例模式 否则会出现不同进程进下OpenCLose混乱
查看完整回答
反对 回复 2019-01-21
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

TerryLee正解。 如果你想在使用ExecuteNonQuery方法之后自动关闭Connection,看下下面的: 你看下ExecuteNonQuery好像有一个参数重载,它能够关闭与之相关联的Connection对象。(我快俩月没接触过C#了,记得是可以的)。
查看完整回答
反对 回复 2019-01-21
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你看外面调用的部分,调用完这个方法后,会有一个关闭连接的操作。
查看完整回答
反对 回复 2019-01-21
  • 4 回答
  • 0 关注
  • 593 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信