如何从 VB.net 将日期写入 Access DB
Posted
技术标签:
【中文标题】如何从 VB.net 将日期写入 Access DB【英文标题】:How to write Date to Access DB from VB.net 【发布时间】:2014-03-11 14:13:45 【问题描述】:我在将日期写入数据库时遇到问题。我一直在到处寻找,看到了许多相互矛盾的标准。
基本上我总是遇到类型不匹配。我确定这很简单,我没有看到。
我的代码如下。基本上,我进行查询,添加参数,然后尝试运行它。 Name 和 phonenumber 是文本,Product Ordered 应该是一个数字(更具体地说是 productID),date 是一个日期。
为什么命令运行时会出现不匹配的情况?
Dim sqlCMD
sqlCMD = "" + _
"INSERT INTO Orders " + _
" ([NAME], " + _
" [PhoneNumber], " + _
" [ProductOrdered], " + _
" [OrderDate]) " + _
"VALUES ('@CustomerName', " + _
" '@PhoneNumber', " + _
" '@ProductOrdered', " + _
" '@OrderDate'); "
Dim connection As OleDb.OleDbConnection = New OleDb.OleDbConnection()
connection.ConnectionString = ConnectionStringConst
Dim command As OleDb.OleDbCommand = New OleDb.OleDbCommand(sqlCMD, connection)
command.Parameters.Add("@CustomerName", OleDb.OleDbType.Char).Value = txtOrderCustName.Text
command.Parameters.Add("@PhoneNumber", OleDb.OleDbType.Char).Value = txtOrderPhoneNum.Text
command.Parameters.Add("@ProductOrdered", OleDb.OleDbType.Integer).Value = cmbOrderItem.SelectedIndex
command.Parameters.Add("@OrderDate", OleDb.OleDbType.DBDate).Value = DateTime.Now
Try
connection.Open()
command.ExecuteNonQuery() 'Perform our query and insert into the table
Catch ex As Exception
MsgBox("ERROR - Your query may not have completed" + vbNewLine + vbNewLine + _
"Error Message: " + ex.Message)
Finally
connection.Close()
End Try
【问题讨论】:
希望这会有所帮助。真的很郁闷Trying to insert DateTime.Now into Date/Time field gives "Data type mismatch" error @Steve 我是 vb.net 而不是 C# 【参考方案1】:数据类型不匹配的原因是参数名称周围存在单引号 基本上你传递一个字符串而不是数字或日期
sqlCMD = "" + _
"INSERT INTO Orders " + _
" ([NAME], " + _
" [PhoneNumber], " + _
" [ProductOrdered], " + _
" [OrderDate]) " + _
"VALUES (@CustomerName, " + _
" @PhoneNumber, " + _
" @ProductOrdered, " + _
" @OrderDate); "
这可能是您的类型不匹配的真正根源。
【讨论】:
你试过不加引号的参数吗? 哦,很高兴能帮上忙,我们又见了 糟糕的数据库引擎可能都被VALUES (''Jeremy', ...
弄糊涂了以上是关于如何从 VB.net 将日期写入 Access DB的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Access 数据库 VB.net 中检索特定数据?