2011-08-25 48 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方法,现在在我的脑海中,在你的情况。

希望这会有所帮助。