C# 在C语言的SQL语句中使用局部变量值

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

我正在尝试从中的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 ] < 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注入攻击更糟糕。请使用参数。。。。你为什么不想使用它们?