Excel Jet OLE DB:插入日期时间值

2023-12-08

OLEDB 可用于读取和写入 Excel 工作表。考虑以下代码示例:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\my\\excel\\file.xls;Extended Properties='Excel 8.0;HDR=Yes'")) {
    conn.Open();
    OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] datetime)", conn);
    cmd.ExecuteNonQuery();
    cmd = new OleDbCommand("INSERT INTO Sheet1 VALUES (@mydate)", conn);
    cmd.Parameters.AddWithValue("@mydate", DateTime.Now.Date);
    cmd.ExecuteNonQuery();
}

这工作得很好。插入数字、文本等也效果很好。但是,插入一个带有 a 的值时间成分 fails:

using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\my\\excel\\file.xls;Extended Properties='Excel 8.0;HDR=Yes'")) {
    conn.Open();
    OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] datetime)", conn);
    cmd.ExecuteNonQuery();
    cmd = new OleDbCommand("INSERT INTO Sheet1 VALUES (@mydate)", conn);
    cmd.Parameters.AddWithValue("@mydate", DateTime.Now); // <-- note the difference here
    cmd.ExecuteNonQuery();
}

执行此 INSERT 失败并出现 OleDbException:标准表达式中的数据类型不匹配。

这是一个已知的错误?如果是,可以采取什么措施来解决这个问题?我找到了一种有效的解决方法:

cmd = new OleDbCommand(String.Format(@"INSERT INTO Sheet1 VALUES (#{0:dd\/MM\/yyyy HH:mm:ss}#)", DateTime.Now), conn);

它基本上创建了一个如下所示的 SQL 语句:INSERT INTO Sheet1 VALUES (#05/29/2011 13:12:01#)。当然,我不必告诉你这有多丑陋。我更愿意有一个带有参数化查询的解决方案。


这似乎是一个已知的错误https://connect.microsoft.com/VisualStudio/feedback/details/94377/oledbparameter-with-dbtype-datetime-throws-data-type-mismatch-in-criteria-expression

您可能想要截断毫秒,如下所示,它似乎适用于 OleDbParameter:

DateTime org = DateTime.UtcNow;
DateTime truncatedDateTime = new DateTime(org.Year, org.Month, org.Day, org.Hour, org.Minute, org.Second);

并将其添加到您的参数值中,而不是 DateTime.Now 中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel Jet OLE DB:插入日期时间值 的相关文章

随机推荐

  • 文本文件的行数

    我正在尝试创建一个函数 它接受文件名 即 data txt 并生成该文件的行数 data txt 24 42 45 54 67 76 89 98 12 21 99 99 33 33 下面的代码是我尝试构建一个函数 该函数接受文件名 data
  • mongoose 和 mongoJS 有什么区别?我应该使用哪个?

    我只是想知道 mongoose 和 mongoJS 有什么区别 那么 如果我们使用 mongoose 或 mongoJS 有何优点和缺点 因为我们知道连接 NodeJS 和 MongoDB 有很多依赖关系 例如猫鼬和 mongoJS Mon
  • 如何从 HTML 文件中提取元标签并在 SOLR 和 TIKA 中对其进行索引

    我正在尝试提取 HTML 文件的元标签 并通过 tika 集成将它们索引到 solr 中 我无法使用 Tika 提取这些元标记 也无法在 solr 中显示 我的 HTML 文件看起来像这样
  • 嵌套对象的默认值

    假设我有以下提供默认值的对象 default values a 0 b 0 c aa 0 bb 0 我还有另一个对象可以覆盖其中一些默认值 override values a 5 c aa 5 我想要的是将这两个对象结合起来 从而产生 co
  • 使用 C# 通过 Skype 进行通话

    我想开发一个盲人辅助软件 比如Jarvis 它是一个 C 表单应用程序 我需要将我的 C 项目与 Skype API 连接起来 以便使用 Skype 调用某个用户名 当我使用命令时Call John 它通过 Skype 呼叫 John 进行
  • 在 NodeJS 协议中实现 STARTTLS

    我正在尝试将 STARTTLS 升级添加到现有协议 当前以纯文本形式运行 首先 我使用一个简单的基于行的回显服务器 这是一个可怕的组装 没有错误处理或将数据包处理成行 但它通常只是在控制台一次发送一行到标准输入时工作 我认为我的服务器是正确
  • Haskell - Aeson:尝试解码 JSON URL Req 时得到“Nothing”

    我对 Haskell 比较陌生 现在我正在尝试更深入地了解并尝试习惯不同的流行库 现在我正在尝试 aeson 我想要做的是解析来自的 MSFT 报价请求 这就是它的样子 Global Quote 01 symbol MSFT 02 open
  • 如何通过ajax验证两个密码字段?

    我正在尝试使用 JSF 验证两个密码字段 但到目前为止还不好 我在 google 上搜索它 但一切都是关于 JSF 1 2 并且非常混乱 我正在使用 JSF 2 0 这就是我到目前为止正在做的事情
  • 如何编写 VBScript 在给定文件夹中启动快捷方式?

    Set oWS WScript CreateObject WScript Shell sLinkFile USERPROFILE Desktop TTS lnk Set oLink oWS CreateShortcut sLinkFile
  • JSTL 格式标签

    尝试在输入文本字段内填充日期值并设置其格式 我在这里做错了什么
  • Material UI 是否已经支持 CSS 容器查询?

    https developer mozilla org en US docs Web CSS CSS Container Queries Container queries for CSS都是最近的 是MUI 5 0已经能够使用它们了吗 不
  • 在 flutter webview 上访问相机

    我有网页显示用户摄像头 如何在 flutter webview 上访问摄像头 我尝试用这个 URL 来做到这一点 https webrtc github io samples src content getusermedia gum 但返回
  • 添加一个将在页面上 echo 到 uniqid 旁边的变量

    我有这个代码
  • Visual Studio 2010:缺少 dll

    我用谷歌搜索了一整天 我快疯了 好吧 这就是我的问题 我已经编写了我的 vs 项目 我已经指定了所有 包含 通过选择项目属性 gt 配置属性 gt VC 目录 和所有外部库目录 以相同的方式 然后 我通过选择项目属性 gt 链接器 gt 输
  • 如何在不影响 Pyqt5 中的小部件的情况下向主窗口添加背景图像

    我想在主窗口中添加背景图像 而不更改其中按钮的背景图像 并且还需要保持纵横比 我尝试过 self centralWidget setStyleSheet background image url The Project logo png b
  • 将 \u200e 解码为字符串

    在 Python3 中 我收到以下错误消息 ValueError time data u200e07 30 200702 38 PM does not match format m d Y I M p from datetime impor
  • 静态类与单例类

    我知道这个话题已经被讨论了一遍又一遍 但我仍然有一个疑问 我希望有人可以帮助我或指导我找到一篇关于 SO 的现有帖子 在传统的C语言中 静态变量存储在数据段中 局部变量存储在堆栈中 我认为与局部变量相比 静态变量的存储和维护成本更高 正确的
  • 如何从标准化数组中获取原始数据

    下面给出了一段简单的代码 它按行规范化数组 import numpy as np from sklearn import preprocessing X np asarray 1 2 1 4 1 2 dtype np float X nor
  • 制作自定义 django 视图装饰器(带参数)时遇到问题

    因此 我阅读了所有类似的问题并复制了他们写的内容 但我仍然遇到问题 所以我想要这样的东西 Yes I know django has one but I want to make my own rate limit seconds 10 m
  • Excel Jet OLE DB:插入日期时间值

    OLEDB 可用于读取和写入 Excel 工作表 考虑以下代码示例 using OleDbConnection conn new OleDbConnection Provider Microsoft Jet OLEDB 4 0 Data S