在C#winforms中 - 如何按日期时间选择器搜索数据库?

时间:2015-05-19 13:02:05

标签: c# winforms

我被困在这两天了。我只想按日期搜索我的表格。我在dataGridView中显示。如果我选择按钮dataGridView显示表中的所有数据。如果我选择日期然后按下按钮我会从捕获消息框中收到以下消息:

Conversion failed when converting data and/or time from character string. 

表名:FlightDetails 列:DateDepart(日期)

    string ConString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    SqlConnection myDB = new SqlConnection(ConString);
    SqlCommand com = new SqlCommand("SELECT * FROM FlightDetails WHERE DateDepart ='" + datDepartDate + "%'", myDB);

    try
    {
    SqlDataAdapter sda = new SqlDataAdapter();
    sda.SelectCommand = com;
    DataTable dsDB = new DataTable();
    sda.Fill(dsDB);
    BindingSource bs = new BindingSource();

    bs.DataSource = dsDB;
    dataGridView1.DataSource = bs;
    sda.Update(dsDB);
    dataGridView1.Visible = true;

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

我正在使用Visual Studio 2013,C#winforms。请使用代码指南。我确信我需要做的就是转换日期时间选择器,但我尝试过没有成功。

1 个答案:

答案 0 :(得分:2)

我不确定为什么要在末尾添加%,但最好使用参数而不是字符串,尤其是日期值,因为字符串表示依赖于文化:

SqlCommand com = new SqlCommand("SELECT * FROM FlightDetails WHERE DateDepart = @datDepartDate", myDB);
com.Parameters.Add("@datDepartDate", SqlDbType.DateTime)
              .Value = datDepartDate;