C# 在datagridview中显示按当前日期筛选的数据C

C# 在datagridview中显示按当前日期筛选的数据C,c#,mysql,performance,datagridview,datatable,C#,Mysql,Performance,Datagridview,Datatable,我的数据库中有大量行。当我尝试将所有数据加载到datagridview时,它被卡住了。我想将数据加载到datagridview,该数据只包含相关的datetimepicker日期。这是我当前的代码 private void showdatagrid() { string constring = string.Format("datasource='{0}';username=uwadminview;port=3306;password=*****************;Connect

我的数据库中有大量行。当我尝试将所有数据加载到datagridview时,它被卡住了。我想将数据加载到datagridview,该数据只包含相关的datetimepicker日期。这是我当前的代码

private void showdatagrid()
{
    string constring = string.Format("datasource='{0}';username=uwadminview;port=3306;password=*****************;Connect Timeout=20000;Command Timeout=28800", dbserverip.Text);
    MySqlConnection conwaqDatabase = new MySqlConnection(constring);
    MySqlCommand cmdwaqDatabase = new MySqlCommand(" select * from waq115.loans ; ", conwaqDatabase);

    try
    {
        MySqlDataAdapter sda = new MySqlDataAdapter();
        sda.SelectCommand = cmdwaqDatabase;
        dbdataset = new DataTable();
        sda.Fill(dbdataset);
        BindingSource bsource = new BindingSource();
        bsource.DataSource = dbdataset;
        dataGridView1.DataSource = bsource;
        sda.Update(dbdataset);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
        conwaqDatabase.Close();
    }
然后在我调用它之后不久,我再次使用这样的行筛选器事件

private void filterdata()
{
    DataView DV = new DataView(dbdataset);
    DV.RowFilter = string.Format("Convert(submittimestamp, System.String) LIKE '%{0}%'", adminviewDTP.Text);
    dataGridView1.DataSource = DV;
}
但是在这种方法中,当加载超过9000行时,性能非常差,它总是被卡住。我想直接从数据库中查询数据的方法只与今天相关

用户每天更新数据库,每天插入500多行 应用程序仍在测试过程中 我正在使用mysql数据库


有人能告诉我在数据库层而不是中间层进行过滤的有效方法吗

    MySqlConnection conwaqDatabase = new MySqlConnection(constring);
    MySqlCommand cmdwaqDatabase = 
         new MySqlCommand("select * from waq115.loans where submittimestamp = @date; ", conwaqDatabase);


    var dateParam = new MySqlParameter();
    dateParam.Name = "@date";
    dateParam.Value = Convert.ToDateTime(adminviewDTP.Text);
    cmdwaqDatabase.Parameters.Add(dateParam);
更新: 带参数:

MySqlCommand cmdwaqDatabase = new MySqlCommand("SELECT * FROM waq115.loans WHERE DATE(submittimestamp) = DATE(@p)", conwaqDatabase);
然后可以添加如下所示的参数

cmdwaqDatabase.Parameters.AddWithValue("@P", dateTimeValue); // convert datetime picker value to DateTime and set as the value;


Charith你为什么觉得需要使用BindingSource?只是好奇…当你需要做的只是将GridView的数据源分配给数据集。。另外,9000行实际上什么都不是,应该加载得非常快。。你能在数据库末尾添加Where子句或过滤器吗?先生,我对C语言不太了解。你能告诉我怎么做吗。我使用教程视频制作了这段代码:谢谢,先生。但是它给了我一个类似于以下错误的错误'MySql.Data.MySqlClient.MySqlParameter'不包含接受1个参数的构造函数,但当我添加参数时,如cam所说,它给了我这个错误'MySql.Data.MySqlClient.MySqlParameter'不包含接受1个参数的构造函数,您能给出作为adminviewDTP.Text获得的示例值吗?或者您用于datetimepicker的日期时间格式是什么?datetimepicker格式很短,如mm/dd/yyyyy。请尝试DateTime dateTimeValue=DateTime.ParseExactadminviewDTP.Text,mm/dd/yyyy,CultureInfo.InvariantCulture;我按照你说的编辑我的代码,但之后我的应用程序将无法打开:S
cmdwaqDatabase.Parameters.AddWithValue("@P", dateTimeValue); // convert datetime picker value to DateTime and set as the value;
cmdwaqDatabase.Parameters.Add(new MySqlParameter("@P", MySqlDbType.Timestamp)).Value = dateTimeValue;