c#使用日期范围设置的datetimepicker选择sql数据库数据

时间:2016-10-13 07:08:54

标签: c# mysql datagridview

我正在尝试制作c#程序,我必须在datagridview上预览数据库报告。将使用datetimepicker选择数据。我已经编写了代码,但是如果选择的日期是不同的月份则可以。没有记录

    void FilterDBbtnClick(object sender, EventArgs e)
    {
            MySqlConnection conn = new MySqlConnection();

            conn = new MySqlConnection(cs);

            string data = "SELECT `Date`, `Process`, `Actual`, `Target` FROM `database` WHERE `Date` BETWEEN '"+this.fromDatePicker.Value+"' AND  '"+this.toDatePicker.Value+"' order by `Date` desc";


            MySqlCommand cmd = new MySqlCommand(data, conn);


            cmd.Connection.Open();

            try
            {

            MySqlDataAdapter sda = new MySqlDataAdapter();
            sda.SelectCommand = cmd;            
            DataSet dt = new DataSet();
            sda.Fill(dt);
            BindingSource bsource = new BindingSource();
            bsource.DataSource = dt;
            mondeDataTable.DataSource = dt.Tables[0];
            sda.Update(dt);

            }

            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }


            cmd.Connection.Close();
    }

请帮我查看我的代码并告诉我可能有什么问题或遗失。

3 个答案:

答案 0 :(得分:0)

使用分析器检查命中数据库的查询。我怀疑这是一个日期格式化问题。

也许fillna可以帮助您记录命中数据库的查询:

答案 1 :(得分:0)

希望这会有所帮助:

Select * from [Table] where StartDate between '06/13/2016' and '10/13/2016'

上述查询在月份06和10之间提取记录。确保data variable中的字符串采用上述格式。此外,数据库中的列类型为date

检查并删除特殊字符(如果有)。

如果您觉得这很有用,请将此标记为答案。

答案 2 :(得分:0)

尝试此选择查询。我已经更改了一个select变量,因为它对Date数据类型不明确。

void FilterDBbtnClick(object sender, EventArgs e)
{
        MySqlConnection conn = new MySqlConnection();

        conn = new MySqlConnection(cs);


        //string data = "SELECT `Date`, `Process`, `Actual`, `Target` FROM `database` WHERE `Date` BETWEEN '"+this.fromDatePicker.Value+"' AND  '"+this.toDatePicker.Value+"' order by `Date` desc";

        //Changed query for getting data from DB according to the date 
        string data = "SELECT CreatedDate, Process, Actual, Target FROM database WHERE DATE_FORMAT(CreatedDate,'%Y-%m-%d') BETWEEN '"+this.fromDatePicker.Value.ToString("yyyy-MM-dd")+"' AND  '"+this.toDatePicker.Value.ToString("yyyy-MM-dd")+"' order by CreatedDate desc";


        MySqlCommand cmd = new MySqlCommand(data, conn);


        cmd.Connection.Open();

        try
        {

        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmd;            
        DataSet dt = new DataSet();
        sda.Fill(dt);
        BindingSource bsource = new BindingSource();
        bsource.DataSource = dt;
        mondeDataTable.DataSource = dt.Tables[0];
        sda.Update(dt);

        }

        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }


        cmd.Connection.Close();
}