如何将我的日期搜索到数据网格视图?我有一个示例代码,我认为是正确的,但为什么不搜索?
private void textBox3_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox3.Text))
{
SqlDataAdapter sda = new SqlDataAdapter("Select * from STUDENT_RESEARCH_PROJECTS WHERE COURSE LIKE '" + comboBox2.Text + "%'", con);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
}
else
{
SqlDataAdapter sda = new SqlDataAdapter("SELECT ACCESSION_NO,TITLE_PROJECT,CATEGORY,YEAR,COURSE,DATE,Student_Name1,Student_Name2,Student_Name3,Student_Name4,Student_Name5,RELATED_TITLE1,RELATED_TITLE2,RELATED_TITLE3,RELATED_TITLE4,RELATED_TITLE5 FROM STUDENT_RESEARCH_PROJECTS WHERE DATE LIKE'" + textBox3.Text + "%'", con);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
}
}
答案 0 :(得分:0)
除非您的LIKE
字段是字符串,否则您无法使用DATE
进行日期比较
您还需要检查日期数据如何保存到数据库中
例如,在我的数据库中,我使用的是datetime
,其保存方式与2018-03-20 07:25:58.557
一样
因此,当您查询时,您需要设置日期格式才能被接受
答案 1 :(得分:0)
首先要注意SQL注入。
您不能在Date
列上使用like运算符。
您的搜索TextBox值日期格式为03/20/2018(mm/dd/yyyy)
,数据库列包含不同的内容,通常2018-03-20 00:00:00.000
进行搜索时日期会更改从数据库查询时的格式。
private void textBox3_TextChanged(object sender, EventArgs e)
{
if (string.IsNullOrEmpty("textBox3.Text"))
{
string query = "Select * from STUDENT_RESEARCH_PROJECTS WHERE COURSE LIKE @COURSE";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@COURSE", comboBox2.Text);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
}
else
{
string query = "SELECT ACCESSION_NO,TITLE_PROJECT,CATEGORY,YEAR,COURSE,DATE,Student_Name1,Student_Name2,Student_Name3,Student_Name4,Student_Name5,RELATED_TITLE1,RELATED_TITLE2,RELATED_TITLE3,RELATED_TITLE4,RELATED_TITLE5 FROM STUDENT_RESEARCH_PROJECTS WHERE CONVERT(varchar(10) ,DATE, 101) = @DATE";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@DATE", textBox3.Text);
SqlDataAdapter sda = new SqlDataAdapter();
DataTable data = new DataTable();
sda.Fill(data);
dataGridView1.DataSource = data;
}
}