这是微软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,到时候就会关了
慕码人2483693
TA贡献1860条经验 获得超9个赞
TerryLee正解。
如果你想在使用ExecuteNonQuery方法之后自动关闭Connection,看下下面的:
你看下ExecuteNonQuery好像有一个参数重载,它能够关闭与之相关联的Connection对象。(我快俩月没接触过C#了,记得是可以的)。
- 4 回答
- 0 关注
- 593 浏览
添加回答
举报
0/150
提交
取消