将varchar数据类型转换为datetime数据类型导致valueoutofrange错误将varchar数据类型转换为date时间数据类型导致值超出范围错误我正在尝试使用表单将数据输入到我的表中,日期格式在表单验证和sqlserver中都是dd/mm/yy,但是当我尝试从提交数据时表格,日期高于12(例如13/12/2012)如果我尝试在表格中输入数据,它会抛出异常,原因是“将varchar数据类型转换为datetime数据类型导致值超出范围错误”mm/dd/yy格式表示“错误的日期格式”,这意味着dd/mm/yy格式是正确的格式这是我的表单的代码:privatevoidbtnAddProject_Click(objectsender,EventArgse){DateTimestartDate;日期时间结束日期;if(txtProjectName.Text=="")//客户端验证{MessageBox.Show("EnterProjectName");返回;}尝试{startDate=DateTime.Parse(txtProjectStart.Text);endDate=DateTime.Parse(txtProjectEnd.Text);}catch(Exception){MessageBox.Show("错误的日期格式");返回;}fa.CreateProject(txtProjectName.Text,startDate,endDate,(int)cbCustomers.SelectedValue,ptsUser.Id);txtProjectName.Text="";txtProjectStart.Text="";txtProjectEnd.Text="";cbCustomers.SelectedIndex=0;MessageBox.Show("项目ectCreated");adminControl.SelectTab(2);}//endbtnAddProject这是我DAO中的代码:publicvoidCreateProject(stringname,DateTimestartDate,DateTimeendDate,intcustomerId,intadministratorId){stringsql;SqlConnectioncn;SqlCommandcmd;GuidprojectId=Guid.NewGuid();sql="INSERTINTOProject(ProjectId,Name,ExpectedStartDate,ExpectedEndDate,CustomerId,AdministratorId)";sql+=String.Format("VALUES('{0}','{1}','{2}','{3}',{4},{5})",projectId,name,startDate,endDate,customerId,administratorId);cn=newSqlConnection(Properties.Settings.Default.WM75ConnectionString);cmd=newSqlCommand(sql,cn);try{cn.Open();cmd.ExecuteNonQuery();}catch(SqlExceptionex){thrownewException("ErrorCreatingProject",ex);}finally{cn.Close();}}//endCreateProjectMethod这是我前面的代码:publicvoidCreateProject(stringname,DateTimestartDate,DateTimeendDate,intcustomerId,intadministratorId){dao.CreateProject(name,startDate,结束日期,customerId,administratorId);}//endCreateProject基本上,你不应该将DateTime值作为字符串传递在SQL中使用参数化SQL,直接设置参数值即可。您应该尽可能使用参数化SQL:此外,您的异常处理毫无意义地复杂。只需使用using语句并让SqlException冒泡-为什么将其包装在普通异常中?您可以像sqldatetimevarsqlFormattedDate=myDateTime.Date.ToString("yyyy-MM-ddHH:mm:ss");那样进行sqldatetime转换sql="INSERTINTOProject(ProjectId,Name,ExpectedStartDate,ExpectedEndDate,CustomerId,AdministratorId)";sql+=String.Format("VALUES('{0}','{1}','{2}','{3}',{4},{5})",projectId,name,startDate.toString("dd-MMM-yyyy"),endDate.toString("dd-MMM-yyyy"),customerId,administratorId);建议:为什么要在代码中使用Insert语句?您可以改用存储过程。以上就是C#学习教程:将varchar数据类型转换为date时间数据类型会导致值超出范围错误的所有内容分享,如果对大家有用,需要进一步了解C#学习教程,我希望大家多多关注~本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
