断续字符串未被识别为有效的日期时间字符串.同时将记录插入SQL
本文关键字:字符串 时间 记录 SQL 插入 日期 识别 有效 | 更新日期: 2023-09-27 18:08:14
我在从网站插入记录到SQL时遇到了String was not recognized as a valid DateTime
。这只会在200个左右的记录插入中发生一次。
基本上,站点要求用户输入日期,日期应该始终是MM/DD/YYYY。我已经把文本框蒙版和正则表达式到位,以确保这一点,也已经测试了几次我自己。
但是,仍然存在站点在SQL存储期间抛出异常的间歇性情况。
我的设置包括一个web服务器和一个单独的SQL服务器。(可能两者有时差?)
我的SQL插入日期输入的代码如下:
sqlCmd.Parameters.AddWithValue("@PatientDateOfService", Convert.ToDateTime(PatientDateOfServiceLabel.Text));
我在同一web服务器上的其他站点上使用相同的模板(和我的SQL服务器上的存储过程),没有问题。这个问题只发生在一个特定的网站上。我开始想这可能是时区或文化相关的问题。
经过广泛的研究,我想知道是否使用CultureInfo类可以帮助我。我正在考虑对我的代码进行以下更改,并想知道其他人可能会怎么想…
// Call a new instance of the CultureInfo method and set to en-US
CultureInfo USCultureInfo = new CultureInfo("en-US");
// Insert the date with newly added CultureInfo instance
sqlCmd.Parameters.AddWithValue("@PatientDateOfService", Convert.ToDateTime(PatientDateOfServiceLabel.Text, USCultureInfo));
这可能有助于解决我的问题吗?
-谢谢
虽然我似乎找不到任何支持此断言的文章,但AddWithValue方法会自动将字符串转换为有效的SQL-Server DateTime值。不过,使用Parameter显式地表示数据类型更安全。添加方法代替,例如
sqlCmd.Parameters.Add(PatientDateOfServiceLabel.Text, SqlDbType.DateSqlDbType.Date);