想要問個介面按"儲存"的關念問題 |
答題得分者是:dllee
|
17kobe
初階會員 ![]() ![]() 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
請問通常軟體在操作時,要按儲存才會真正的儲存到資料庫,而其運作流程是如何呢。
我想到的方法是:軟體一開始都讀取資料庫(1),然後備份資料庫(2),之後便都是在資料庫(2)讀取及操作,若有按儲存時,將資料庫(1)殺掉,再將資料庫2複製一份為資料庫(1),沒有的話就直接離開就好。 但是我覺得這好像不是個好方法,因為還要複制一份資料庫好像很浪費時間,或者是有那種能比對資料庫(1)跟資料庫(2)不同的地方修改就好了。 不知道大家有什麼方法 (還是記錄更新資料庫的指令,最後有儲存再一次更新)。 |
pedro
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
|
Coffee
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:878 積分:561 註冊:2006-11-15 發送簡訊給我 |
|
暗黑破壞神
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
1.你的操作只是一筆。不用複製整個資料庫。
2.你忘了還有記憶體這個東西。 你的資料先讀到記憶體,有修改才儲存到資料庫。沒修改就當沒事發生。 3.要備資料庫?你想太多了吧。@@ ===================引 用 17kobe 文 章=================== 請問通常軟體在操作時,要按儲存才會真正的儲存到資料庫,而其運作流程是如何呢。 我想到的方法是:軟體一開始都讀取資料庫(1),然後備份資料庫(2),之後便都是在資料庫(2)讀取及操作,若有按儲存時,將資料庫(1)殺掉,再將資料庫2複製一份為資料庫(1),沒有的話就直接離開就好。 但是我覺得這好像不是個好方法,因為還要複制一份資料庫好像很浪費時間,或者是有那種能比對資料庫(1)跟資料庫(2)不同的地方修改就好了。 不知道大家有什麼方法 (還是記錄更新資料庫的指令,最後有儲存再一次更新)。 |
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
我猜想,我或許了解您的問題了。(說真的,看到那麼多人回覆您的問題,真是羨慕呀)
先聲明,資料庫不是我熟悉的領域。 個人認為,這要看您是用什麼資料庫? 如果是一般現成使用 TTable/TQuery 存取的資料庫或是經由 ADO 或其他方式取存的市面上大部分的資料庫,您的想法是多餘的, 因為您只是經由這些元件或介面去操作資料庫,資料庫檔案由資料庫 系統自行維護。 若使用 TTable/TQuery 在資料新增修改後,使用 Post() 即可存入資料 TBDEDataSet::Post Writes a modified record to the database. virtual void __fastcall Post(void); Description Call Post to write a modified record to the database. Dataset methods that change the dataset state, such as Edit, Insert, or Append, or that move from one record to another, such as First, Last, Next, and Prior automatically call Post. 若很多資料更新修改,擔心資料沒存入,可叫用 FlushBuffers() 或是 Close() 資料庫, 由資料庫系統將資料存入檔案。 您說的方法,如果是您自己開發資料庫系統,又應用上客戶有這樣的需求,就可以按您的規劃去作。 以我個人的應用上,例 IniFile 的使用,如果使用 TIniFile,每次操作都是直接讀取檔案,為了減少 檔案的讀取,我改用 TMemIniFile,則是一次將檔案讀到記憶體,之後都在記憶體操作,在必要時, 再將記憶體內的資料寫回原 Ini 檔。TMemIniFile 的運作就類似您的規劃。
------
http://www.ViewMove.com |
P.D.
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
===================引 用 17kobe 文 章=================== 請問通常軟體在操作時,要按儲存才會真正的儲存到資料庫,而其運作流程是如何呢。 我想到的方法是:軟體一開始都讀取資料庫(1),然後備份資料庫(2),之後便都是在資料庫(2)讀取及操作,若有按儲存時,將資料庫(1)殺掉,再將資料庫2複製一份為資料庫(1),沒有的話就直接離開就好。 1.你有考慮到如果資料上萬筆時的問題嗎? 2.你有考慮到資料庫(1)殽掉的種種問題嗎? (之前連結,讀取,權限....) 3.你有考慮到資料庫(2)要複製到資料庫(1)的種種問題碼? (如覆蓋問題,共用問題,控管問題) 4.你有考慮到萬一資料庫(1)已被刪除,資料庫(2)又複製失敗時,你怎麼辦? 5.你有考慮到你這麼做法,在一切都是感知元件的狀況下,你如何掌控所有畫面上感知元件的連結? 6.你有考慮到目前是網路的架構嗎? 如果主資料庫是在遠端時,你怎麼辦? 但是我覺得這好像不是個好方法,因為還要複制一份資料庫好像很浪費時間,或者是有那種能比對資料庫(1)跟資料庫(2)不同的地方修改就好了。 6.既然你都認為不是好方法,提出你的流程作法再透過大家討論才是正確的詢問方式,而不是要大家提供方法,因為方法太多,這樣的提問,很容易遭致民怨的哦! 或者根本你認為"不是個好方法" 只是你自己隨口說說? 不知道大家有什麼方法? (還是記錄更新資料庫的指令,最後有儲存再一次更新)。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |