【发布时间】:2011-07-23 21:54:01
【问题描述】:
错误是:从字符串转换日期和/或时间时转换失败。
基本上,我试图做到这一点,以便当有人单击列表框中的位置时,它会将 Stats 表中的正确字段增加 1,以表示他们单击了该位置。我一直在尝试解决这个问题一段时间,但无处可去。我的日期是日期格式,我的 Stats 表中的 Date 字段也是如此。我的代码如下所示。
Dim Current As String
Dim Check As String
Dim objCmd2 As Object
Dim iCount As Integer
Dim tDate As Date
Current = LocBox.SelectedItem
Check = LocList.FindString(Current)
If Check > -1 Then
MsgBox("You have already selected this place to visit")
Else
LocList.Items.Add(Current)
ObjDataReader.Close()
tDate = Date.Today
MessageBox.Show(tDate)
tDate = tDate.ToString()
objCmd2 = New SqlCommand("SELECT " & Replace(Current, " ", "_") & " FROM Stats WHERE Date = '" & tDate & "'", objConn)
ObjDataReader = objCmd2.ExecuteReader
If ObjDataReader.HasRows Then
ObjDataReader.Read()
If ObjDataReader(0) Is DBNull.Value Then
iCount = 0
Else
iCount = ObjDataReader(0)
End If
Else
iCount = 0
End If
objCmd = New SqlCommand("INSERT INTO Stats(Date," & Replace(Current, " ", "_") & ") Values('" & tDate.Date & "'," & iCount & " )", objConn)
ObjDataReader.Close()
objCmd.ExecuteNonQuery()
objConn.Close()
提前致谢。
问题出现在我认为的第二条 SQL 语句中。我不明白为什么在日期字段中添加日期会成为问题,我尝试将其添加为无效的字符串。感谢到目前为止的所有答案。
【问题讨论】:
-
使用带有正确数据类型参数的参数化查询。这更安全(SQL 注入),应该可以解决您的问题。
-
Sql Server中datetime列的格式是什么?它实际上是一个约会时间吗?还是类似于varchar?在处理日期和时间时,您不应该使用字符串。使用日期时间。
标签: sql sql-server vb.net date