vb application

2007-12-29 3:41 am
我是初哥, 請問寫 vb application 時, 用sql , (update, select, insert) 直接更新數據庫, 同用dataset, recordset 更新數據庫有什麼分別!

1) 如果用dataset, recordset時,當其他用戶更新db, dataset, recordset中的資料會否同時更新 ?

2) 如果table 資料越多, dataset, recordset會否佔用resource 越多, 引至系統不穩定!

3) 有沒有其他好方法 ?

回答 (2)

2007-12-29 9:45 pm
✔ 最佳答案
樓上是不正確的

你更新dataset, db是不會更新的, 因為最終都要執行adapter.update或行cmd後, db才會更新, 而且更新完, 其他用戶要重新fill dataset, 其資料才會更新的. 簡單點講, dataset是程式的資料暫存位置, 是不會跟db有直接聯系, 詳情應看ado.net這個題目. 至於更新recordset後, 其它用戶會否看同即時更新呢. 答案是, 視乎開啟該recordset的方法是什麼. 於vb6, 印象中, connection的接駁方式都有四種, 而開啟recordset的方法都有四種 (不太肯定, 你最好到msdn 看看ado這個題目). 若是開啟方法是optimistic, 同時接駁方法是不會斷開的, 那大家的更新, 會同時看到的 (但這樣做, 會使資料庫的工作量很大的)
是否愈多, 要看你怎樣處理資料了. 簡單例子, 假設有一個table, 有幾百萬個記錄, 但你只須查看某一個時, 若你仍是整個table的資料下載至客戶端, 當然, 所需的資源便多了很多, 因而導致資源不足而當機; 相反, 你只拿有用的記錄下來, 沒用的不拿, 那問題不大了. 這題目正正是資料庫效能調整的題目了. 因為, 大多數系統慢的原因, 並不是硬件不夠用, 多數都是做了太多無謂動作所致, 無謂動作是指, 做了太多不必要的table join, 下載了太多不必要的記錄, 像這情況, 給你超級電腦都不夠用呢. 所以, 宗旨是, 儘可能先where statement filter走不必要的記錄才作table join, 那情況會大大地改善.
上文已提供應做的方向, 若不明白, 歡迎寄電郵給我.
小弟現時將自己答過的問題及一些關於電腦的知識, 輯錄上小弟的博客, 請大家多多支持.

http://1erp-expert.b logspot.com/
參考: me
2007-12-29 1:08 pm
1.會,會同時更新既
2.佢應該係視附番你查詢既資料既多少而使用資源
3.如果你用vb.net既,重可以用dataSet物件去提取資料庫


收錄日期: 2021-05-01 22:07:26
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20071228000051KK04131

檢視 Wayback Machine 備份