C# dateTime应该使用哪个字符(例如,对于int,我们使用%d)

C# dateTime应该使用哪个字符(例如,对于int,我们使用%d),c#,C#,当我们想要像int那样将某事物传递给数据库时,我们使用如下所示的(%d) …string.format(“从代码=%d的表中选择*”,100). 当我们想要传递日期时间时,我应该使用什么来代替%d?不要使用string.format()替换db参数,您最终将进入SQL注入。SqlCommand具有Parameters属性,您可以将参数添加到集合中 使用如下参数化查询: SqlCommand cmd = new SqlCommand() cmd.Parameters.AddWithValue("@

当我们想要像
int
那样将某事物传递给数据库时,我们使用如下所示的(%d)

…string.format(“从代码=%d的表中选择*”,100).

当我们想要传递
日期时间时,我应该使用什么来代替
%d

不要使用string.format()替换db参数,您最终将进入SQL注入。SqlCommand具有Parameters属性,您可以将参数添加到集合中

使用如下参数化查询:

SqlCommand cmd = new SqlCommand()
cmd.Parameters.AddWithValue("@yourParam",value);
using(var connection = new SqlConnection("your connectionstring goes here"))
{
    using(var command = new SqlCommand("select* from Table where code=@dateTime", 
                                                                             connection))
    {
        command.Parameters.AddWithValue("@dateTime", DateTime.Now);

        var reader = command.ExecuteReader();
    }
}
如果在代码中使用Using块,效率会更高

像这样

using(SqlConnection con = new SqlConnection("ConnString"))
using(SqlCommand cmd =  new SqlCommand(con))
{
   // do some stuffs. like add parameters. 
}

除了@Ravi的答案

您应该避免像那样连接SQL查询,因为这将允许

在您的情况下,我会考虑使用ORM(,),但是如果您只想使用<代码> Sql命令< /C> >,您的查询看起来会有点类似:

SqlCommand cmd = new SqlCommand()
cmd.Parameters.AddWithValue("@yourParam",value);
using(var connection = new SqlConnection("your connectionstring goes here"))
{
    using(var command = new SqlCommand("select* from Table where code=@dateTime", 
                                                                             connection))
    {
        command.Parameters.AddWithValue("@dateTime", DateTime.Now);

        var reader = command.ExecuteReader();
    }
}
以下是来自wikipedia的一个示例,它显示了连接sql语句的问题:

statement=“从用户名=”+userName+“;”的用户中选择*”

如果
用户名
只包含一个
,会发生什么情况

最后的SQL语句将如下所示:

SqlCommand cmd = new SqlCommand()
cmd.Parameters.AddWithValue("@yourParam",value);
using(var connection = new SqlConnection("your connectionstring goes here"))
{
    using(var command = new SqlCommand("select* from Table where code=@dateTime", 
                                                                             connection))
    {
        command.Parameters.AddWithValue("@dateTime", DateTime.Now);

        var reader = command.ExecuteReader();
    }
}
从name=''的用户中选择*


这是不正确的,将抛出一个错误。通过公开这一点,您可以对您的数据做非常有害的事情

在.NET中,您在哪里可以找到
string.format
?特别是C格式字符串?可能与