這是微軟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); }
沒有關(guān)閉連接,測試了下,我調(diào)用ExecuteNonQuery后,連接還是打開的,是不是故意這么設(shè)計,還是什么原因
4 回答

烙印99
TA貢獻1829條經(jīng)驗 獲得超13個贊
因為是外部傳入的SqlConnection,他不確定你是否需要這個連接繼續(xù)開著,所以沒關(guān)閉,設(shè)計使然
你要他自動關(guān)閉,應(yīng)該傳一個string作為連接字符串進去,這樣的話他會自己開個conn,然后標(biāo)記一個似乎叫mustClose的變量為true,到時候就會關(guān)了

慕碼人2483693
TA貢獻1860條經(jīng)驗 獲得超9個贊
TerryLee正解。
如果你想在使用ExecuteNonQuery方法之后自動關(guān)閉Connection,看下下面的:
你看下ExecuteNonQuery好像有一個參數(shù)重載,它能夠關(guān)閉與之相關(guān)聯(lián)的Connection對象。(我快倆月沒接觸過C#了,記得是可以的)。
- 4 回答
- 0 關(guān)注
- 638 瀏覽
添加回答
舉報
0/150
提交
取消