local 還是 global ?? |
尚未結案
|
digitraveler
初階會員 發表:89 回覆:91 積分:46 註冊:2005-06-01 發送簡訊給我 |
private void button1_Click(object sender, EventArgs e)
{ string ConnString; ConnString="Data Source =127.0.0.1; initial catalog=......(略)"; string selectCmd="select * from title"; dataGridView.DataSource=GetTable(selectCmd,"title",ConnString); //DataSource 直接從其它函式取回 } private DataTable GetTable(string SQLcmd, string TbName, string ConnString) { SqlConnection conn=new SqlConnection(ConnString); conn.Open(); SqlDataAdapter da=new SqlDataAdapter(SQLcmd, conn); DataSet ds=new DataSet(); da.Fill(ds,TableName); conn.Close(); da.Dispose(); return ds.Tables[TbName]; } 看到書上有以上的寫法覺得很新奇 ... (1).ds 是 GetTable() 內部的私有物件 , 透過 GetTable() return 出來, 就可以給大家用 ?? 那 ds 到底是 local 還是 global 的 ? (2).ds 何時該被 Dispose() ?? (3).若 select 條件一直在變 , call GetTable() 多次, 是否先前的 ds 都沒被 Dispose() ?? 如 : string selectCmd="select * from title where field1=\"1234567\""; dataGridView.DataSource=GetTable(selectCmd,"title",ConnString); ..... //換了 selectCmd 條件再 call GetTable() selectCmd="select * from title where field1=\"24680\""; dataGridView.DataSource=GetTable(selectCmd,"title",ConnString); ..... //換了 selectCmd 條件再 call GetTable() selectCmd="select * from title where field1=\"13579\""; dataGridView.DataSource=GetTable(selectCmd,"title",ConnString); 以上三次呼叫 GetTable() 是在記憶體中產生三個 ds , 還是用的是同一個 ds (4) 書上的寫法 Connection 物件都只被 close() 不用被 Dispose() ?? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |