【问题标题】:Insert date/time into Access database将日期/时间插入 Access 数据库
【发布时间】:2012-05-01 15:48:52
【问题描述】:

我正在使用 ASP.NET/VB 并尝试在 Access 日期/时间字段中插入日期和时间,但出现错误(条件表达式中的数据类型不匹配)。这是我的代码的简化版本:

Dim myDate As Date = Now()
Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (?)", myConn)
myIns1.Parameters.AddWithValue("@myDate", myDate)
myIns1.ExecuteNonQuery()

不确定为什么会出现错误,也不确定这是否是插入当前日期的正确方法。从查看其他类似问题来看,似乎有几种不同的方法可以做到这一点,但我的技术知识有点有限,所以我很难弄清楚(换句话说,用我知道的技术术语破译答案没什么)。

提前致谢!

【问题讨论】:

    标签: asp.net sql vb.net ms-access


    【解决方案1】:

    您可以完全跳过参数,直接将 NOW 函数写入查询。

    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (NOW())", myConn)
    myIns1.ExecuteNonQuery()
    

    这个答案(上面那个)可能是更好的解决方案,但是原始代码不起作用的原因是参数没有命名。你可以试试这个:

    Dim myDate As Date = Date.Now
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse (date_submitted) VALUES (@myDate)", myConn)
    myIns1.Parameters.AddWithValue("@myDate", myDate)
    myIns1.ExecuteNonQuery()
    

    【讨论】:

    • 命名参数不适用于 OleDb。他们只在位置上工作。因为传递的值不是日期时间,所以它没有更早地工作。更多信息:mikesdotnetting.com/Article/92/…
    • 迈克,当你说参数只在位置上起作用时,你是对的。但是,您说它不起作用“因为传递的值不是 DateTime”。它肯定是一个日期时间。 ToOADate() 函数将值从 DateTime 转换为 Double。
    【解决方案2】:

    尝试改变

    Dim myDate As Date = Now()
    

    Dim myDate As DateTime = Now()
    

    MS Access 不提供 DATE 数据类型,仅提供 DATETIME。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-06
    • 2016-07-16
    • 2013-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多