【发布时间】:2017-07-16 10:35:40
【问题描述】:
我在尝试从 DateTime 选择器中获取日期以保存到我的数据库时遇到了很多麻烦。从 Localhost 运行时它工作正常,但在公共服务器上运行时它不会。 最初我使用了 cDate 函数,还尝试了 Convert.ToDateTime。但在服务器上,它现在给了我一个错误“字符串未被识别为有效的日期时间。”
我研究发现最好使用 DateTime.TryParse 函数。找到一个示例后,我为我的项目更改了它,现在我收到错误“必须声明标量变量“@articledate”。”
当我调试项目时,添加到“result1”DateTime 中的值是正确的。但它仍然在 ExecuteNonQuery 处抛出错误?
如果有区别的话,主服务器是由 GoDaddy 托管的,Localhost 是我的 PC。
任何帮助或建议将不胜感激。
cnSQL1 = New SqlConnection(MSSQL.cRemoteConnectionString)
cnSQL1.Open()
sSQL = "SELECT NewsID FROM News WHERE Season = @season AND Heading = @heading AND ArticleDate = @articledate AND Author = @author AND Club = @club AND State = @state AND AddedDate = @addeddate AND AddedBy = @addedby AND Release = @release"
Dim com1 As New SqlCommand(sSQL)
com1.Connection = cnSQL1
com1.Parameters.AddWithValue("@season", General.sSeason)
com1.Parameters.AddWithValue("@heading", General.UppercaseFirstLetter(txtHeading.Text))
Dim result1 As DateTime
com.Parameters.AddWithValue("@articledate", DateTime.TryParseExact(txtArticleDate.Text, "dd-MM-yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, result1))
'com1.Parameters.AddWithValue("@articledate", Convert.ToDateTime(txtArticleDate.Text))
com1.Parameters.AddWithValue("@author", txtAuthor.Text)
com1.Parameters.AddWithValue("@club", ddlClub.SelectedItem.Value)
com1.Parameters.AddWithValue("@state", dsState.Tables(0).Rows(0).Item(0))
com1.Parameters.AddWithValue("@addeddate", Date.Today)
com1.Parameters.AddWithValue("@addedby", Session("UserID"))
com1.Parameters.AddWithValue("@updatedate", Date.Today)
com1.Parameters.AddWithValue("@updateby", Session("UserID"))
com1.Parameters.AddWithValue("@release", s)
com1.ExecuteNonQuery()
【问题讨论】:
-
设置日期选择器时,指定格式是一种安全、明确的格式,不受区域或语言设置的影响。
yyyymmdd是安全的(yyyy-mm-dd不是,m/d/y或d/m/y也不是)。
标签: asp.net sql-server vb.net datetime