如何从 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的主要内容,如果未能解决你的问题,请参考以下文章

在日期 VB.NET 和 Access 数据库之间过滤

如何从 Access 数据库 VB.net 中检索特定数据?

vb.net怎么将datagridview的数据写入数据库

vb.net 2010日期格式和系统日期格式不一致,求解

使用 vb.net 以编程方式将 Access 数据库从 03 转换为 07?

如何使用 vb.net 从 MS Access DB 表单中找出 Activex 控件