【发布时间】:2018-03-15 16:19:59
【问题描述】:
我正在尝试创建一种方法来检查日期以查看它是否已存在于我的数据库中。但是,我遇到了一个异常,即程序无法从 varchar 转换。谁能告诉我为什么会这样?
public static int CheckDate(DateTime date)
{
using (SqlConnection connection = new SqlConnection(_connectionstring))
{
int nooforders = 0;
connection.Open();
string SqlQuery = string.Format("SELECT COUNT(OrderID) AS 'OrderCount' FROM OrderTable WHERE DateofCollectionDelivery = '{0}'", date);
SqlCommand datecheck = new SqlCommand(SqlQuery, connection);
SqlDataReader sqlDataReader = datecheck.ExecuteReader();
while (sqlDataReader.Read())
{
nooforders = (int)sqlDataReader["OrderCount"];
}
connection.Close();
return nooforders;
}
}
这是我运行的方法,这是一个例外:
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
表中的字段具有日期时间的数据类型,所以我不确定它为什么会抛出异常。
【问题讨论】:
-
使用 SQL 参数。他们不会像该代码那样将您的日期转换为文本。
-
日期变量的格式是否为'yyyy-mm-dd'?
-
使用
date.ToString("yyyy-MM-ddTHH:mm:ss"),你可以在这里blog.nicholasrogoff.com/2012/05/05/…找到更多关于日期到字符串格式的信息 -
无需将日期转换为任何特定格式的字符串。 NET DB 提供程序完全能够将日期传递给数据库。如果他们不能,他们将几乎一文不值