我在做一个winform项目,要按日期查询出我的日记表中的详细内容,前二个字段都是datetime类型的,我用的代码如下,运行报错为"从字符串向 datetime 转换时失败",但我不知道咋改,请各位高手帮帮忙。
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"");
//创建数据库连接对象、数据库连接字符串
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from thing where date = 'dateTimPicker1.Value'";
SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read())
{
string xierushijian = reader.GetString(1);
string dotime = reader.GetString(2);
string thingscontent = reader.GetString(3);
textBox3.Text = ("写入时间:" + xierushijian + "做此事的时间:" + dotime + "事项内容:" + thingscontent);
}
}
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(@"");
//创建数据库连接对象、数据库连接字符串
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from thing where date = 'dateTimPicker1.Value'";
SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read())
{
string xierushijian = reader.GetString(1);
string dotime = reader.GetString(2);
string thingscontent = reader.GetString(3);
textBox3.Text = ("写入时间:" + xierushijian + "做此事的时间:" + dotime + "事项内容:" + thingscontent);
}
}
cmd.CommandText = "select * from thing where date = '"+dateTimPicker1.Value+"'";
2,没写conn.open
3,sql语句拼接写错
改为:
string dotime = reader[2].ToString();
刚刚看到帖子,问题已经回答的差不多了。
最后这个问题我帮助您来回答,为什么使用reader[fieldOrdinal].ToString()来进行取值.
原因是因为使用读取器进行读取数据时,返回值类型是一个一般的object类型,其类型决定可以承载任何类型包括空值。所以才有您刚才一问。
希望您能够理解..