我有一些连接字符串和查询,我需要存储在我的C#程序之外(不能对它们进行硬编码)。现在我正在使用Visual Studio的应用程序配置文件。不幸的是,查询需要从我的程序中运行变量(由用户在运行时选择)。
我目前的解决方法是将查询分解为配置文件中的各个部分,然后在程序中重新组合它们。我宁愿避免这种情况,因为它很难从配置文件中读取查询。有没有人有更优雅的解决方案?
答案 0 :(得分:6)
Stored procedures将是我的偏好。这可以很好地保护你sql injection(除非你不正确地构造它们),并且是普遍接受的最佳实践。
否则,请使用parameterized个查询。它们可以存储在配置文件中。 (但是,如果您继续在纯文本配置文件中存储连接字符串等敏感数据以及可行的查询等有用信息,我将确保encrypt the .config文件。)
答案 1 :(得分:1)
一种常见的方法是使用占位符并在运行时替换它们。
答案 2 :(得分:1)
如果您必须从程序中删除字符串且无法使用存储过程,最简单的方法是使用已存在的参数来存储字符串,如下所示:
从city = @City的国家/地区选择*
加载此字符串并向查询中添加参数。 始终在查询生成时使用参数。
这是一个简单,直接和更多SQL本机方法,现在我想到了你的情况。
希望这有帮助。