【发布时间】:2013-08-23 21:54:24
【问题描述】:
在将我的网站从本地移动到 Web 服务器时遇到一个错误,我有点难过。在本地我没有得到这个代码的错误,在网络服务器上我得到“指定的演员是无效的”。
抛出错误的代码行是:
DateTime expirationDate = (DateTime)dtUser.Rows[0]["PasswordExpirationDate"];
我认为这是从数据库中获取 DateTime 并在 C# 中使用它的有效方法。我已验证该值不为空,目前为 2013-11-18 16:41:41.937
我已经尝试切换到 Convert.ToDateTime(dtUser.Rows[0]["PasswordExpirationDate"]) 并且无论是否添加了 .ToString() 都失败了。
我找不到 Web 服务器抛出此错误而本地没有的原因。有没有人有更好的方法来获得这个值,或者关于网络服务器可能存在什么问题的任何想法?
【问题讨论】:
-
那么它是数据库中的字符串(varchar)还是日期时间?你如何填充它,使用 DataAdapter 还是手动填充?数据库架构是相同还是不同?
-
是数据库中的日期时间。它用 SqlDataAdapter 填充。这些站点都使用相同的数据库,因此架构是相同的。
-
什么意思是“它以 2013-11-18 16:41:41.937 的形式出现”。它是
DataTable中的字符串吗? sql-query 怎么样,你真的选择了 datetime-field 而没有转换成 varchar 吗? -
如果我在调试器中捕获它,我会看到上面给出的值。如果我对此进行观察,dtUser.Rows[0]["PasswordExpirationDate"],它在窗口中对我来说就像一个 DateTime。我看到的是 DateTime 对象的属性,而不是字符串或其他任何东西。老实说,它看起来甚至不需要演员表。查询是“SELECT PasswordExpirationDate FROM Users WHERE UserID = @UserID”
标签: .net sql datetime datatable