【发布时间】:2014-04-11 11:35:50
【问题描述】:
我正在尝试通过文本框在我的数据库表中插入日期。但即使我将字符串转换为日期时间,我仍然会收到此错误:
“将 nvarchar 数据类型转换为 datetime 数据类型导致值超出范围”。
我在我的数据库中采用了日期时间数据类型。这是我的代码:
try
{
SqlCommand cmd = new SqlCommand(@"INSERT INTO tblProject(project_starting_date,project_ending_date)values(@projectstartingdate,@projectendendingdate)", objconn);
//cmd.Parameters.AddWithValue("@projectstartingdate", DateTime.Parse(txtStartingdate.Text).ToString());
//cmd.Parameters.AddWithValue("@projectendendingdate", DateTime.Parse(txtProjectendingdate.Text).ToString());
DateTime stdate;
if(DateTime.TryParse(txtStartingdate.Text, out stdate))
{
//cmd.Parameters.AddWithValue("@projectstartingdate",stdate);
SqlParameter projstrtdate = new SqlParameter("@projectstartingdate", SqlDbType.DateTime);
projstrtdate.Value = stdate;
cmd.Parameters.Add(projstrtdate);
}
DateTime enddate;
if (DateTime.TryParse(txtProjectendingdate.Text, out enddate))
{
//cmd.Parameters.AddWithValue("@projectendendingdate", enddate);
SqlParameter projenddate = new SqlParameter("@projectendendingdate", SqlDbType.DateTime);
projenddate.Value = enddate;
cmd.Parameters.Add(projenddate);
}
if (objconn.State == ConnectionState.Closed)
{
objconn.Open();
}
norowaffected = cmd.ExecuteNonQuery();
objconn.Close();
}
catch (Exception ex)
{
Response.Write( ex.ToString());
}
请指导我哪里做错了?
【问题讨论】:
-
与您的列关联的类型有哪些?该错误似乎表明它们是
nvarchar列.. 而不是您所期望的datetime。向我们展示您的表的定义。 -
@Simon:我的数据库字段是-project_starting_date(datetime,null) project_ending_date(datetime,null)