C# 我们可以在c winform中插入一些数据和插入值选择查询吗

C# 我们可以在c winform中插入一些数据和插入值选择查询吗,c#,sql,datetime,sql-insert,datetimepicker,C#,Sql,Datetime,Sql Insert,Datetimepicker,我想在两个datetimepicker中插入日期和月份以及插入值选择查询 我的发票表中有五列 我可以为前三列插入值,但其余两列为null,我不知道将datetimepicker值放在哪里 我在表单的设计视图中为日期和月份使用datatimepicker insert into invoice (Student_id, Amount, Fee_description, issue_date, month) select student.Student_id,

我想在两个datetimepicker中插入日期和月份以及插入值选择查询

我的发票表中有五列

我可以为前三列插入值,但其余两列为null,我不知道将datetimepicker值放在哪里

我在表单的设计视图中为日期和月份使用datatimepicker

insert into invoice (Student_id, Amount, Fee_description, issue_date, month)
    select 
        student.Student_id, 
        Fee.Fee_Amount, Fee.fee_type
    from 
        student
    join 
        parent on student.father_nic = parent.father_nic
    join 
        allocate_class on student.Student_id = allocate_class.Student_id
    join 
        class on class.class_id = allocate_class.class_id
    join 
        session on allocate_class.session_id = session.session_id
    join 
        Fee on class.class_id = Fee.class_id
    where 
        session.session_id = 1
        and Fee.fee_type = 'Tution Fee'
        and student.status = 'active'

在上面的查询中,在哪里添加这两个datetimpicker值?

当然。它看起来像这样:

var cmd = new SqlCommand("insert into invoice (
    Student_id,
Amount,
Fee_description,
issue_date,
month
)
select student.Student_id
 , Fee.Fee_Amount
 , Fee.fee_type

 , @issDat
 , @mon

  from ...", "conn str here");


cmd.Parameters.AddWithValue("@issDat", issueDateDateTimePicker.Value);
cmd.Parameters.AddWithValue("@mon", monthDateTimePicker.Value);
我已经用AddWithValue快速解释了这个概念——谷歌在一个名为“我们能不能停止使用AddWithValue”的博客上已经讨论了很长时间,讨论了如何远离它。在这种情况下,它是合理的,因为它不被用于过滤,但目前我试图讲述的概念是:

sql语句可以从您处获取固定值:

SELECT 'hello' FROM table
它还可以采用您提供的固定参数:

SELECT @pHello FROM table
因此,添加参数,并使用白天选择器或datetime中的固定值对其进行归档。现在或其他任何情况都可以,您应该如何使用insert插入固定值。。。选择样式语句


请注意,不清楚月份和发行日期是否相关,但如果它们是相同的日期,则无需存储两次-您可以随时从日期中提取月份。

hurrah u已经确定了。。。。。。。。。非常感谢,但我有一个问题…………在表单加载时,我将month datetimepicker值更改为monthDateTimePicker.Format=DateTimePickPerformat.Custom;monthDateTimePicker.CustomFormat=MMMM yyyy。。。。。。。。。。。。。你的一个cmd.Parameters。AddWithValue@mon,monthDateTimePicker.Value;它存储日期和时间也不太确定这是一个什么问题,但你应该知道,没有哪一个日期只有一个月,也没有哪一天/时间——日期总是代表一个特定的时间点,只有几分之一秒。如果您只想表示一个月,您可以在处理它时忽略日期部分,或者为日期和时间存储一些公共值,如01表示日期,00:00表示时间,所以你在数据库中的2001年3月是2001-03-01 00:00,4月是2001-04-01 00:00,等等,你总是切断。这就是为什么我说如果发布日期和月份相同,只需将发布日期存储为2001-04-01 12:34:56.789,当你想在报告或其他任何内容上显示月份时,将其格式化为yyyy MMMM,使其成为2001年4月。非常感谢。。你解决了我的问题。。真的向你致敬你可以用var d=monthDateTimePicker.Value这样的东西来修复你的@mon;cmd.Parameters。AddWithValue@mon,new DateTimed.Year,d.Month,1-它只拉取年份和月份,并将日期固定在1时间为午夜
SELECT @pHello FROM table