2010-09-24 114 views
2

我想知道什麼是數據庫查詢的最佳做法。我正在使用C#,MySQL數據庫。什麼是數據庫查詢的最佳實踐?

我有一個應用程序,我硬編碼所有的數據庫查詢。現在客戶已經修改了數據庫結構所以我不得不再次修改這些查詢,因爲所有查詢都在代碼中,我需要測試應用程序,構建它,創建安裝程序並執行更多與部署相關的事情。

如何避免這些問題?我們應該在哪裏繼續詢問?在一些純文本文件或在app.config或其他地方?

我希望查詢是可配置的,這樣當發生這種情況時,只需要更改配置,無需更改代碼或可執行文件。

我們不使用存儲過程,也沒有使用ORM框架。

在此先感謝

謝謝大家的寶貴意見。我認爲在目前的情況下,我能做的最好的事情就是修改查詢,並在下次嘗試着重於存儲過程。

再次感謝。

+1

「我們不使用存儲過程」爲什麼不呢? – 2010-09-24 13:37:40

+0

@GôTô,我們沒有使用存儲過程,因爲這個決定來自高層管理人員.... – Shekhar 2012-04-04 06:59:43

回答

4

我們沒有使用存儲過程,也沒有使用ORM框架。

這些應該是你真正的選擇。如果你不使用它們,那你的運氣不好。

也許你的最佳做法不是技術性的,而是組織性的。建立一個關於修改數據庫的流程。

  • 對數據庫的更改必須由各方加以討論和商定參與
  • 每一個參與方應有關數據庫的變化提前通知有時間來作出反應
+0

@Shekhar,我同意@Developer Art。聽起來像組織已經鎖定你**非**的最佳做法。 – Brad 2010-09-24 13:42:10

+0

我想是的。我建議使用存儲過程,但是......無論如何,我認爲在這種情況下,我所能做的就是再次更改查詢。 – Shekhar 2010-09-24 13:44:03

0

做到這一點的一種方法是有一些你的程序使用的通信DLL,這樣你只需要改變你調用的程序集,如果數據庫發生了變化。然而,除非你寫出完全通用的,使用鍵值對或變量的東西,否則你仍然會受到同樣的影響。

另一種方式是通過存儲過程,完成數據庫中的所有工作,然後調用存儲過程來完成工作。

但是,這仍然可能會有所變化。

1

存儲過程解決了大多數這些問題。適當的模式規劃(之前爲它編寫代碼)也有助於抵消它。

另一種方式是創建程序調用的某種數據庫API。將所有內容分開並通過共享的模型庫訪問它。

0

你可以將數據訪問層添加到項目中,然後將數據集添加到數據訪問層。數據集(.xsd)文件將幫助您組織您的查詢。您將可以將所有查詢添加到數據集,這將成爲您的一站式商店,以編輯/刪除或添加新查詢。例如:請到以下鏈接

http://www.shiningstar.net/aspnet_articles/DataSet/DataSetProject6.aspx