【发布时间】:2013-05-13 10:32:53
【问题描述】:
我在通过 C# asp.net 在线将日期存储在 sql server 数据库中时遇到问题
我在 ASP 文件中使用了 asp 文本框和 asp 日历扩展器来获取用户的日期,
<asp:TextBox runat="server" ID="txt_date"></asp:TextBox>
<asp:CalendarExtender runat="server" ID="cal_date" TargetControlID="txt_date"></asp:CalendarExtender>
文件后面的代码是,假设连接和命令已声明和初始化,
mycom = new SqlCommand("insert into mytable(dtCol1) values('"+Convert.ToDateTime(txt_dob.Text).ToString("dd-MMM-yyyy") + "')", mycon);mycom.ExecuteNonQuery();
问题是,当我选择的日期小于任何月份的 12 时,它可以完美运行, 但是当日期/日期大于任何月份的 12 时,它会给出错误,
Exception Details: System.FormatException: String was not recognized as a valid DateTime.
我已经尝试了 .ToString("dd-MMM-yyyy") 的所有组合
请帮忙 提前致谢
【问题讨论】:
-
您在
txt_dob中写入日期时间值时使用什么格式 -
如果您在 12 日以上有问题,则表示您的日期格式错误,并将月份存储为一天,反之亦然。检查您必须发送到 SQL 的确切格式。最好使用参数而不是粘合查询 - 这是你冒 SQL 注入风险的坏习惯。
-
感谢@Rajeev Kumar - 它采用日历扩展器的默认时间格式,即 mm-dd-yyyy
-
我不敢相信有人没有意识到他/她正在使用 friggin(激光)SqlCommand 动态编写 Sql!
标签: c# asp.net sql-server