我正在使用 C# 和 MySQL 创建一个应用程序。 MySQL 表 (tbl_sales
) 有四个字段 (sale_item、sale_qty、added_n 和 last_updated_on
)。 last updated_on
字段的数据类型是DateTime
。我想根据下面的 SQL 显示 DataGridView 中的记录。 SELECT * FROM tbl_sales WHERE last_updated_on >="+ dateTimePicker1.Text;
我收到以下错误 您的 SQL 语法有错误;查看与您的 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();
}
}
最佳答案
正如 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
),请使用 DateTime.ParseExact
分配参数值时:
cmdLocal.Parameters.Add("@last_updated", MySqlDbType.DateTime).Value = DateTime.ParseExact(dateTimePicker1.Text, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
关于c# - 如何使用 WHERE 条件显示记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50340713/