C# 如何使用WHERE条件显示记录

C# 如何使用WHERE条件显示记录,c#,mysql,C#,Mysql,我正在使用C和MySQL创建一个应用程序。MySQL表tbl_sales有四个字段sale_item、sale_qty、added_n和last_updated on。上次更新的_on字段的数据类型为DateTime。我想根据以下SQL在DataGridView中显示记录。选择*FROM tbl_sales,其中上次更新日期>=+dateTimePicker1.Text 我得到了您的以下错误和SQL语法中的错误;查看与yout MySQL服务器版本相关的手册,以了解第1行附近要使用的正确语法 我

我正在使用C和MySQL创建一个应用程序。MySQL表tbl_sales有四个字段sale_item、sale_qty、added_n和last_updated on。上次更新的_on字段的数据类型为DateTime。我想根据以下SQL在DataGridView中显示记录。选择*FROM tbl_sales,其中上次更新日期>=+dateTimePicker1.Text

我得到了您的以下错误和SQL语法中的错误;查看与yout MySQL服务器版本相关的手册,以了解第1行附近要使用的正确语法

我使用了下面的C代码

private void button1_Click(object sender, EventArgs e)
    {
        string query;
        try
        {
            conLocal.Open();
            query = "SELECT * FROM tbl_sales WHERE last_updated_on >=" + textBox1.Text; // Convert.ToString(dateTimePicker1.Text);

            cmdLocal = new MySqlCommand();
            cmdLocal.Connection = conLocal;
            cmdLocal.CommandText = query;
            da = new MySqlDataAdapter();
            da.SelectCommand = cmdLocal;
            dt = new DataTable();
            da.Fill(dt);

            dataGridView1.DataSource = dt;

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        finally
        {
            da.Dispose();
            conLocal.Close();
        }
}

可能您应该在单引号中包含日期-时间文本值。类似于……的东西。parse语句将在无效日期引发异常,因此相应地处理它

var lastUpdatedValue = DateTime.Parse(textBox1.Text);
var query = $"SELECT * FROM tbl_sales WHERE last_updated_on >='{lastUpdatedValue}'"
最后但并非最不重要的一点是,建议使用替代字符串的方法。

正如Chetan Ranpariya所说,您可以使用MySqlDbType.DateTime数据类型设置一个参数,将日期值传递到查询中,如下所示:

query = "SELECT * FROM tbl_sales WHERE last_updated_on >= @last_updated";

// conLocal is a MySqlConnection
using (var cmdLocal = new MySqlCommand(query, conLocal))
{
    cmdLocal.Parameters.Add("@last_updated", MySqlDbType.DateTime).Value = DateTime.Parse(dateTimePicker1.Text);

    // execute query & bind to DataGridView here
}
如果从日期选择器传递的字符串值具有预先指定的格式,例如yyyy MM dd HH:MM:ss,则在指定参数值时使用:

cmdLocal.Parameters.Add("@last_updated", MySqlDbType.DateTime).Value = DateTime.ParseExact(dateTimePicker1.Text, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

首先,您应该使用参数化查询来避免此类错误。使用参数化查询,将文本从datetimepicker转换为datetime,并使用它设置参数值。可能与我使用的上述建议重复,但不显示记录。MySQL表数据无WHERE条件WHERE条件原因是您要求记录>=上次更新->检查日期->您要求记录在5月15日之后更新,而您的记录在5月13日或之前更新。所以你要么把查询改成,我想这只是为了插入代码,但我的选择是查询