2012-02-20 118 views
0

我将日期时间参数错误转换为字节[]。 这个想法是显示通过控件输入并在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

马尔维娜您好,欢迎StackOverflow的字符串。 由于我们缺少一些信息(例如您使用的编程语言以及您使用的是哪种数据库引擎和/或框架),因此我们在查看这里发生的情况时遇到了一些问题。 请填写这些空白处,帮助我们为您提供帮助。 – 2012-02-20 16:23:10

+0

感谢您的回复。我使用.Net框架,C#和MS SQL Server 2005. – malvina 2012-02-20 16:28:28

+0

错误是否发生在'DateTime dtDateBegin = Convert.ToDateTime(sDateBegin);'? 如果是这样,这可能可以通过使用'DateTime.Parse(字符串输入)'(请参阅http://msdn.microsoft.com/en-us/library/1k1skd40.aspx) 我可以'当然,难以分辨你提到的存储过程和gridview控件在做什么;) – 2012-02-21 09:12:27

回答

2

您已经定义了的SqlParameter为时间戳数据类型(这是一个字节数组)而不是DateTime。鉴于你代表日期范围,听起来你应该改变参数数据类型为DateTime。

+1

+1。另一个没有阅读文档Timestamp的含义。我喜欢那个。这个问题适合于老年人的交流 - 只是一个侧面提问,得到(错误的答案),把简历放在它所属的地方 - 垃圾桶。时间戳数据类型与时间戳无关;) – TomTom 2012-02-21 09:40:04

+0

谢谢,不幸的是,我已经尝试过这一点,它没有任何区别,错误是一样的。 – malvina 2012-02-21 10:20:23

0

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

构建DateTime对象的正确方法是通过解析与

DateTime.Parse(string input) 
相关问题