C# 如何使用WHERE条件显示记录
我正在使用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代码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行附近要使用的正确语法 我
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日或之前更新。所以你要么把查询改成,我想这只是为了插入代码,但我的选择是查询