0

我在将参数从 DateTime 转换为 Byte[] 时出错。这个想法是显示 2 个指定日期之间的数据,这些日期通过控件输入并显示在 GridView 上,并使用存储过程访问数据。我不明白这个错误,但我猜所有数据都放在一个数组中并传递给存储过程:

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);
4

2 回答 2

3

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

于 2012-02-21T09:37:18.367 回答
0

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

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

DateTime.Parse(string input)
于 2012-02-21T10:51:18.030 回答