无法将参数值从DateTime转换为Byte []

时间:2012-02-20 16:08:31

标签: c# gridview datatable dataadapter sqlparameter

我在将参数从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);

2 个答案:

答案 0 :(得分:3)

您已将SqlParameter定义为Timestamp数据类型(字节数组)而不是DateTime。鉴于您正在表示日期范围,听起来您应该将参数数据类型更改为DateTime。

答案 1 :(得分:0)

发生错误是因为Convert.ToDateTime尝试从任何对象进行隐式转换为DateTime。 来自控件的对象是一个字符串,但不是可以强制转换为DateTime对象的字符串。 它实际上是一个由字符串表示的日期和时间。

构造DateTime对象的正确方法是使用

解析字符串
DateTime.Parse(string input)