我试图通过文本框在我的数据库表中插入日期。但即使我将字符串转换为Datetime,我仍然会收到此错误:
“将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());
}
请指导我在哪里做错了?
答案 0 :(得分:0)
之前我遇到过同样的问题。我通过删除数据库中的相应列来修复它,并使用正确的格式重新创建它#34;所以你的日期时间为#34;。问题得到解决。 似乎数据库中仍有信息告诉它之前是什么格式。
答案 1 :(得分:0)
您的语言环境配置可能正在尝试以错误的意外格式转换数据字符串。
尝试以下方法:
if(DateTime.TryParse(txtStartingdate.Text, out stdate)
{
SqlParameter projectStartingDateParam = new SqlParameter("@projectstartingdate", SqlDbType.DateTime);
projectStartingDateParam.Value = stdate;
cmd.Parameters.Add(projectStartingDateParam);
}
对" projectendingdate"做同样的事情。创建一个SqlParameter,其SqlDbType等于SqlDbType.DateTime,并将其添加到查询命令(cmd变量)。
如果此操作无效,请仔细检查您的表格结构是否为DateTime格式。 通过SQL Server Management Studio直接手动插入数据库。