use*_*183 8 c# sql-server asp.net visual-studio
我正在使用一个使用大量内联SQL查询的asp.net网站......我想知道最好是在运行时创建内联查询:
int i = 500;
using (SqlConnection conn = new SqlConnection(connStr))
{
SqlCommand com = new SqlCommand(conn);
...
com.CommandText = "select from table where column < @parameter";
...
}
Run Code Online (Sandbox Code Playgroud)
或者有一个类来保存应用程序所需的所有查询.像这样的东西:
class SqlQueries
{
private string query1 =
"select * from tblEmployees where EmployeeName = @EmployeeName";
private string query2 =
"select * from tblVacation where EmployeeName = @EmployeeName";
public string Query(string s)
{
string str = string.Empty;
switch (s)
{
case "query1":
str = query1;
break;
case "query2":
str = query2;
break;
}
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
我在我的日子里使用了很多ADO.NET查询,而且我总是使用第一种方法.第二种方法是一个有趣的想法,但如果您在使用它的代码中的另一个位置,编辑这些查询可能会很麻烦.它还使查看代码中特定位置的查询更加困难.例:
string sql = "Update User set age = @age where UserId = @UserId";
Run Code Online (Sandbox Code Playgroud)
告诉开发人员发生了什么,同时:
string sql = SqlQueries.Query("updateAge");
Run Code Online (Sandbox Code Playgroud)
留下有关正在更新的表/列的问题.另外,对于第一个,您确切地知道需要添加哪些参数.
如果您在几个可能会改变的地方编写此查询
将文字直接放在方法中并不可怕,只要每次要运行该查询时总是调用相同的方法即可.但是,如果要将该字符串文字复制到代码中的多个位置,则绝对优先使用常量.但是,不是在第二个示例中将字符串作为Query方法的参数,而是应该使用枚举值.
但是,如果您使用的是您描述的第二种方法,我会问您为什么不开始使用存储过程?