我在将参数从DateTime转换为Byte []时遇到错误。 这个想法是显示通过控件输入并在GridView上显示的2个指定日期之间的数据,并使用存储过程访问数据。我不明白错误,但我猜测所有数据都放在一个数组中并传递给存储过程:
string sDateBegin = Request.Form["fromDate"];
DateTime dtDateBegin = Convert.ToDateTime(sDateBegin);
SqlParameter prmDateBegin = new SqlParameter("datebegin", SqlDbType.Timestamp);
prmDateBegin.Value = dtDateBegin;
cmdProc.Parameters.Add(prmDateBegin);
//same code for DateEnd
// data table
DataTable dataTable = new DataTable();
AGridView.DataSourceID = null;
// data adapter
SqlDataAdapter dataAdapter = new SqlDataAdapter(cmdProc);
AGridView.DataSource = dataTable;
//fill datatable
dataAdapter.Fill(dataTable);
答案 0 :(得分:3)
您已将SqlParameter定义为Timestamp数据类型(字节数组)而不是DateTime。鉴于您正在表示日期范围,听起来您应该将参数数据类型更改为DateTime。
答案 1 :(得分:0)
发生错误是因为Convert.ToDateTime尝试从任何对象进行隐式转换为DateTime。 来自控件的对象是一个字符串,但不是可以强制转换为DateTime对象的字符串。 它实际上是一个由字符串表示的日期和时间。
构造DateTime
对象的正确方法是使用
DateTime.Parse(string input)