2011-08-25 33 views
0

我有一些連接字符串和查詢,我需要存儲在我的C#程序(無法硬編碼)。現在我正在使用Visual Studio的應用程序配置文件。不幸的是,查詢需要從我的程序運行的變量(由用戶在運行時選擇)。存儲查詢在C#程序outisde的最佳途徑

我目前的解決方法是將查詢拆分成配置文件中的碎片並在程序中重新組合它們。我寧願避免這種情況,因爲它使得很難從配置文件中讀取查詢。有沒有人有更優雅的解決方案?

+1

爲什麼不使用存儲過程? – Jethro

回答

6

Stored procedures在服務器上接受參數將是我的偏好。從sql injection可以很好地保護你(除非你不適當地構造它們),並且是最普遍接受的最佳做法。

否則,請使用parameterized查詢。它們可以存儲在配置文件中。 (但是,如果你繼續像存儲連接字符串和有益的東西像一個純文本的配置文件可行的查詢敏感數據,我會織補確保encrypt the .config文件。)

+0

我的確切想法。好一個。 +1 – Jethro

+0

+1用於存儲過程。最佳實踐安全明智,這也是這個問題的優雅解決方案。 – Michael

+0

另外,看看像實體框架或NHibernate的O/R映射器 - 這與你的問題稍微正交,但它承擔了它。 –

1

常用的方法是使用佔位符並在運行時替換它們。

1

如果必須有串出你程序並不能使用存儲過程,最簡單的方法是將存儲字符串已經PARAMATERS,這樣的事情:

SELECT * FROM國家,城市= @city」

加載這個字符串,並添加參數給你的查詢。總是在查詢生成中使用參數。

這是簡單,直接和更原始的SQL方法,現在在我的腦海中,在你的情況。

希望這會有所幫助。