C# 在WinForms中使用DateTimePicker

C# 在WinForms中使用DateTimePicker,c#,sql-server,winforms,C#,Sql Server,Winforms,我试图通过C应用程序WinForms根据日期从MSSQL数据库中选择一些记录,并使用以下代码: string select = @" select g.nume as Gestiune, p.cod as NumarNIR, p.doc_cod as DocumentDeBaza, p.Validat as Validat, p.Facturat as Contat from primar p inner join

我试图通过C应用程序WinForms根据日期从MSSQL数据库中选择一些记录,并使用以下代码:

string select = @"
select 
    g.nume as Gestiune, 
    p.cod as NumarNIR, 
    p.doc_cod as DocumentDeBaza, 
    p.Validat as Validat, 
    p.Facturat as Contat 
from 
    primar p 
        inner join gestiuni g 
        on p.part2=g.gest_id 
           and data= '" + dtpNIR.Value.ToString() + "' 
           and cod='" + txtNIR.Text +"'";
尝试选择记录时出现的错误:

将varchar数据类型转换为datetime数据类型导致值超出范围

我一直在寻找答案,但我能找到的只是关于使用datetimepicker使用insert语句。我错过了什么?谢谢使用Sql参数。 使用参数可以消除向查询传递值时的所有格式问题

string select = @"
    select 
        g.nume as Gestiune, 
        p.cod as NumarNIR, 
        p.doc_cod as DocumentDeBaza, 
        p.Validat as Validat, 
        p.Facturat as Contat 
    from 
        primar p 
            inner join gestiuni g 
            on p.part2=g.gest_id 
                and data=@DateNIR 
                and cod=@TextNIR";

SqlParameter[] parameters = 
{
    new SqlParameter("@DateNIR", dtpNIR.Value),
    new SqlParameter("@TextNIR", txtNIR.Text)
}

using SqlConnection conn = new SqlConnection(yourConnectionString)
{
    using SqlCommand command = new SqlCommand(select, conn)
    {
        command.Parameters.AddRange(parameters);
        conn.Open()
        //Execute command
    }
}
使用参数可以防止 如果根据数据库架构正确定义了参数的属性,则可以提高查询的性能重新使用已编译的查询计划使用Sql参数。 使用参数可以消除向查询传递值时的所有格式问题

string select = @"
    select 
        g.nume as Gestiune, 
        p.cod as NumarNIR, 
        p.doc_cod as DocumentDeBaza, 
        p.Validat as Validat, 
        p.Facturat as Contat 
    from 
        primar p 
            inner join gestiuni g 
            on p.part2=g.gest_id 
                and data=@DateNIR 
                and cod=@TextNIR";

SqlParameter[] parameters = 
{
    new SqlParameter("@DateNIR", dtpNIR.Value),
    new SqlParameter("@TextNIR", txtNIR.Text)
}

using SqlConnection conn = new SqlConnection(yourConnectionString)
{
    using SqlCommand command = new SqlCommand(select, conn)
    {
        command.Parameters.AddRange(parameters);
        conn.Open()
        //Execute command
    }
}
使用参数可以防止
如果根据已编译查询计划的数据库架构重用正确定义了参数的属性,则可以提高查询性能

什么是dateTimePicker?什么是dateTimePicker?