Re: [問題] Datareader的限制問題
※ 引述《wind681201 (阿風~~)》之銘言:
: 在msdn上面有說,在connection裡,只能存在一個datareader,
: 這一句話,我一直是看不懂,我的疑問是。
: 一、一個connection裡只能存在一個Datareader?
: 二、只要是連線相同的資料庫,只能有一個datareader?
: 三、關閉datareader就好,還是連sqlcommand也要一起關了,才可以用呢?
: 狀況一:
: 在a.aspx網頁裡有一個connection連b資料庫,在這裡只能有一個datareader?
: 那在b.aspx網頁中有一個connection連b資料庫,就無法使用datareader?
: 也就是說,整個網站,多人使用一個datareader?
: 狀況二:
: A class裡,有conneciotn連資料庫b,若我
: dim a1 as new a : dim b1 as new a
: 那是個存在一個datareader嗎?還是說a1 b1都有自己的datareader可用呢?
: 狀況三:
: 同樣的連線中,跑槽狀迴圈,就不能用datareader因為只能有一個,可能
: 外層的datareader沒關,就不能用在內層?
: 研究很久了,還是不清楚
一個Reader被建立出來後在尚未關閉或消滅之前connection都是保持著open
所以同樣的connection實體再去做其他Command會丟出Exception
狀況二不明白你說的意思
狀況三
Reader是順向而且不可逆的資料讀取
你需要在後面大量程式碼使用到的資料請讀入DataTable
--------------------------------------------------
在想狀況的時候實際把狀況寫出程式碼來自己Run應該可以減少許多類似問題
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.223.37.85
※ 文章網址: http://www.ptt.cc/bbs/C_Sharp/M.1401637364.A.F22.html
※ 編輯: m339606 (61.223.37.85), 06/01/2014 23:43:30
推
06/02 14:11, , 1F
06/02 14:11, 1F
→
06/02 14:11, , 2F
06/02 14:11, 2F
推
06/02 18:02, , 3F
06/02 18:02, 3F
→
06/02 18:03, , 4F
06/02 18:03, 4F
這問題圍繞在"實體"的認知上
一個Reader實體依存在一個Conn的實體上
你可以同時new兩個Conn實體來取得兩個Reader實體
但你沒辦法用一個Conn實體來取得兩個Reader實體
物件要區分出兩個狀況
1.靜態物件
2.非靜態物件
靜態物件在程式初始化時就已經建立了,那靜態物件裡面的靜態Conn實體就只存在一個
只存在一個所以受限於基礎的限制
非靜態物件你在new出來時才會建立出一個實體物件,你每次new都是不同的實體物件
裡面的Conn則理所當然的屬於不同的物件實體
※ 編輯: m339606 (61.223.164.237), 06/02/2014 18:19:00
推
06/02 18:31, , 5F
06/02 18:31, 5F
→
06/02 18:31, , 6F
06/02 18:31, 6F
根據你的陳述沒辦法說是對的
我上面的陳述一直在強調"實體"
我可以在一個Class中宣告N個Conn實體取得N個Reader
但是根據你的陳述比較類似於,我整個程式運作只能存在一個Reader
或是
一個物件只能存在一個Reader
※ 編輯: m339606 (61.223.164.237), 06/02/2014 20:39:58
推
06/02 21:41, , 7F
06/02 21:41, 7F
→
06/03 20:59, , 8F
06/03 20:59, 8F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章