语境:
我使用的CodeFile写我所有的VB.NET我的ASP.NET web表单。我的.aspx试图使用表单中的用户输入在我的MSACCESS数据库表中创建一条记录。我的组织尚未购买Visual Studio,因此我在NotePad ++中完成了所有工作,并且没有真正的调试功能。INSERT查询 - 日期时间参数去MSACCESS表不工作(ASP.NET)
问题:
之一的输入文本框要求输入日期,预期输入其中将被验证遵循“M/d/YYYY”。
每当我尝试修改或调整我的代码以使其起作用时,我总是出现相同的错误:“System.FormatException:String未被识别为有效的DateTime。”
任何帮助将大大赞赏!!
存在问题的部分:
我要指出,任何问题,我这个代码中找到同样适用于其他日期字段我使用收集“到期日”,你可能会在完整的代码部分中看到。
Dim prmAdded as OleDbParameter = New OleDbParameter("@DateAdded",OleDbType.DBDate)
dt = DateTime.ParseExact(newDateAdded.value,"M/d/yyyy", provider)
prmAdded.Value = dt
cmd.Parameters.Add(prmAdded)
注:
- 我爆发了从ParseExact Date对象自身的变量, 'DT',而不是直接放置到 'prmAdded.value' 用于调试 目的。
- 我试过其他几种OleDbtypes,它们产生了同样的错误。
- 我已经看过其他类似的帖子,并尝试这些解决方案,但我仍然得到相同的错误。
全码:
Protected Sub AddTask_Click(ByVal sender As Object, ByVal e As EventArgs)
con.Open()
Dim strSQL as string, dt as DateTime, provider as CultureInfo = CultureInfo.InvariantCulture
strSQL = "INSERT INTO Tasks(Task, DateAdded, DateDue)" _
& "VALUES (@Task,@DateAdded,@DateDue)"
Dim cmd As New OleDbCommand(strSQL, con)
cmd.Parameters.Clear()
cmd.Parameters.AddWithValue("@Task", newTask.value)
Dim prmAdded as OleDbParameter = New OleDbParameter("@DateAdded",OleDbType.DBDate)
dt = DateTime.ParseExact(newDateAdded.value,"M/d/yyyy", provider)
prmAdded.Value = dt
cmd.Parameters.Add(prmAdded)
Dim prmDue as OleDbParameter = New OleDbParameter("@DateDue",OleDbType.Date)
dt = DateTime.ParseExact(newDueDate.value,"M/d/yyyy", provider)
prmDue.Value = dt
cmd.Parameters.Add(prmDue)
cmd.ExecuteNonQuery()
con.Close()
什么样的条目导致错误?问题是输入的文本与提供的格式相匹配,而不是'OleDbParameter' – Plutonix
@Putonix我正在使用的输入错误的条目是来自类型=''的输入框的一串“2/17/2016”文字'在我的网页上。输入的ID ='newDateAdded'。 –
哦btw ..检查这个免费的视觉工作室:https://www.visualstudio.com/support/legal/mt171547 –