Using和ADO.NET的一些觀念
之前一直以為Using使用在ADO.NET上是非常方便的,可以幫我們自動開關連線,但剛剛才發現
這個想法其實是錯的,以下範例會產生錯誤
using(SqlConnection cn =new SqlConnection(constring))
{
string Sqlstring = "Insert into PMPM_ROLE_POLICY(MAIN_ROLE_ID,INTERACTION_ROLE_ID,ROLE_RELATIONSHIP,RELATIONSHIP_SCOPE,CREATE_USER_ID,CREATE_DATETIME) ";
Sqlstring += " values(@MainRoleID,@InteractionID,@RoleRelation,@RelationScope,@CreateUser,@CreateTime)";
SqlCommand insertCmd = new SqlCommand(Sqlstring, cn);
insertCmd.Parameters.Add("@MainRoleID", SqlDbType.VarChar).Value = mainRole;
insertCmd.Parameters.Add("@InteractionID", SqlDbType.VarChar).Value = interactionRole;
insertCmd.Parameters.Add("@RoleRelation", SqlDbType.VarChar).Value = relationRole;
insertCmd.Parameters.Add("@RelationScope", SqlDbType.VarChar).Value = relationScope;
insertCmd.Parameters.Add("@CreateUser", SqlDbType.VarChar).Value = userId;
insertCmd.Parameters.Add("@CreateTime", SqlDbType.DateTime).Value = System.DateTime.Now;
insertCmd.ExecuteNonQuery();
insertCmd.Dispose();
}
於是後來把cn.open()加上去之後就OK了。
這時就有點困惑了,之前寫的查詢功能,並沒有另外再寫開啟的指令,怎麼用新增的方式去跟資料庫互動就需要呢?
後來爬文找到喵大這篇,這才稍稍了解,有興趣可以去看看
http://www.dotblogs.com.tw/topcat/archive/2008/03/06/1282.aspx?fid=1137
大意上是說,使用Using在某些ADO.NET狀況上還是必須要自己寫開啓指令,至於為甚麼會這樣,
請參考此篇
http://www.dotblogs.com.tw/topcat/archive/2008/07/03/4427.aspx
Using使用參考