C# 在C语言的SQL语句中使用局部变量值
我正在尝试从中的sql atatement中的日期中动态减去天数C# 在C语言的SQL语句中使用局部变量值,c#,sql,sql-server,C#,Sql,Sql Server,我正在尝试从中的sql atatement中的日期中动态减去天数 C# code I have is int myInt=6; //its value will vary var q = SELECT [DATE] FROM DB WHERE [Date ] < DATEADD(dd, **myint**, GETDATE())"; 有没有办法在sql语句中传递这个变量 我试过这个 var q = SELECT [DATE] FROM DB WHERE [Date
C# code I have is
int myInt=6; //its value will vary
var q = SELECT [DATE] FROM DB WHERE [Date ] < DATEADD(dd, **myint**, GETDATE())";
有没有办法在sql语句中传递这个变量
我试过这个
var q = SELECT [DATE] FROM DB WHERE [Date ] < DATEADD(dd, [coumln]+"'+myint+'", GETDATE())";
的确,您应该将其作为参数传递
string connectionString = "YourConnectionString";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand(
"SELECT [DATE] FROM DB WHERE [Date] < DATEADD(dd, @MyInt, GETDATE())", connection))
{
command.Parameters.Add(new SqlParameter("MyInt", myInt));
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
DateTime date = reader.GetDateTime(0);
Console.WriteLine("Date: {0}",
date);
}
}
}
您还可以使用类似LinqToSql的内容:
或者像Dapper这样的ORM:把它传递到哪里?C代码或SQL。您似乎编写了一个SQL语句,其中您说您正在用C或SQL Server编写此查询?标记您正在使用的dbms。在C中添加日期并避免SQL Server对所有行运行添加函数将是更好的解决方案。我可以不参数化地执行此操作吗技术上可以,但你真的不想这样做——在性能、维护和安全方面,SQL注入攻击更糟糕。请使用参数。。。。你为什么不想使用它们?