線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1594
推到 Plurk!
推到 Facebook!

local 還是 global ??

尚未結案
digitraveler
初階會員


發表:89
回覆:91
積分:46
註冊:2005-06-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-22 09:05:51 IP:211.21.xxx.xxx 訂閱
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() ??
系統時間:2024-05-02 15:10:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!