我知道這個問題已被問到here。但我的問題稍有不同。當數據集的設計遵循了斷開連接的原則時,提供了哪些功能來處理應用程序的意外終止,例如電源故障或導致重新啓動的窗口掛起或系統異常。假設用戶輸入了大約100行,並且僅在數據集中進行修改。通常,數據集在應用程序關閉或及時更新。我的數據集發生意外故障時會發生什麼
在過去使用vb 6.0進行編程的所有交互都是直接與數據庫進行交互,因此每個成功的交易都會自動提交。這怎麼可以使用數據集來完成?
我知道這個問題已被問到here。但我的問題稍有不同。當數據集的設計遵循了斷開連接的原則時,提供了哪些功能來處理應用程序的意外終止,例如電源故障或導致重新啓動的窗口掛起或系統異常。假設用戶輸入了大約100行,並且僅在數據集中進行修改。通常,數據集在應用程序關閉或及時更新。我的數據集發生意外故障時會發生什麼
在過去使用vb 6.0進行編程的所有交互都是直接與數據庫進行交互,因此每個成功的交易都會自動提交。這怎麼可以使用數據集來完成?
DataSets永遠不會直接訪問數據庫,它們只是一個斷開的模型。他們無意從機器故障中恢復。
如果您想針對數據庫進行實時工作,您需要使用DataReaders並針對數據庫發出DbCommands以進行更改。這當然會增加您在數據庫服務器上的負載。
您必須爲大多數應用程序平衡兩者。如果您知道用戶只是將重要數據輸入爲新行,請對數據庫執行insert命令,並將副本放入本地緩存的DataSet中。然後,您的本地查詢可以針對斷開的數據運行,並且插入將立即存儲。
DataSet可以很容易地進行序列化,因此您可以通過使用DataSet到文件系統的序列化來實現自己的常規備份到磁盤。這將給你一些保護,但你將不得不編寫自己的代碼來檢查你的應用程序以前可能保存到磁盤的任何數據,等等......
你也可以忽略DataSet並使用SqlDataReaders和SqlCommands對於您所描述的同一種「直接訪問數據庫」。
你有那個權利,那來到我的下一個問題http://stackoverflow.com/questions/1160639/why-switch-from-ado-to-ado-net。如果我仍然必須使用sqldatareaders和sqlcommands,爲什麼我應該切換到ado.net? – 2009-07-22 05:50:47