问题标签 [oledbconnection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
13780 浏览

c# - ASP.NET 中的 Excel 读取:如果列具有不同的数据格式,则不会读取数据

我有一个 asp.net C# 应用程序,我正在使用 OLEDBConnection 读取电子表格的内容。我正在使用下面的代码行从 excel 电子表格中读取数据。

我的一列有各种格式的数据,如字符串、数字、日期等,在不同的行中。运行时,当数据格式不同时,它不会从 excel 文件中读取该值。我在网上搜索了很多,发现我们需要在连接字符串中提及 IMEX 属性。我添加了,但没有正面回应!。

经过大量冲浪后,我发现任何内置的 Excel 驱动程序都会查询工作表的前 8 行,然后确定(未经您的许可或知识)它是什么类型的列,从而忽略任何不稍后在工作表中满足此数据类型。

http://www.mattjwilson.com/blog/2009/02/13/microsoft-excel-drivers-and-imex/

有没有办法摆脱这个问题?

0 投票
4 回答
2219 浏览

c# - 使用 Microsoft Jet Engine 读取 XLS 文件

我想允许我的应用程序从XLS文件中导入数据。我已经对CSV文件和XML文件执行此操作,但想为用户打开范围。我在加载文件时遇到问题。我们将文件 ( XLS, CSV, XML) 加载到数据集中并从那里开始处理。加载代码XLS如下

所以我的数据加载正常,但它似乎设置了各种列的数据类型,这对于我的一个列来说是个问题。这是一个位字段,我们选择接受False, True, Yes, No, Y, 和N。稍后有代码将其转换为布尔值。这在一个CSV文件(连接字符串不同)中工作正常,但在一个文件中XLS,如果前 10 行是FALSEor TRUE,然后说第 11行是YES,那么我只会得到一个空条目。我猜它会读取前几个条目并根据它确定数据类型?

问题: 有没有办法关闭根据前几个条目识别列数据类型的机制?

0 投票
1 回答
559 浏览

c# - C# 中包含 MSACCESS 数据库连接的 Where cluase 查询示例

类似于标题。只想要一个带有 Where 子句查询的 Oledb 连接示例。

0 投票
1 回答
953 浏览

excel - OleDbConnection 未能创建新的 excel 文件

我必须使用 OleDbConnection 来创建一个新的 excel 文件,但是当我用这个字符串打开连接时:

我收到一个错误,英语听起来像“外部表格不是预期的格式”。

但是文件是新的并且是空的......我该怎么办?

0 投票
1 回答
946 浏览

.net - 为什么 'MSysNavPaneGroupCategories' 出现在 .NET OleDbProvider 对 Access 2K db 的查询中,条件为:WHERE MSysObjects.Name NOT LIKE 'MSys*'

我想在网格视图中列出 MS Access 数据库中的所有表及其行数。我正在使用如下查询:

在 MS Access 查询窗格中,这工作得很好。但是,当我通过 .NET 中的 OleDbCommand 对象运行查询时,尽管查询生成了一个结果集,但我得到了一行包含 MSysNavPaneGroupCategories 的数据。当我尝试时,这一行总是抛出错误:

错误信息是:

System.InvalidOperationException 未处理。

提供程序无法确定 Int32 值。例如,行刚刚创建,Int32 列的默认值不可用,消费者尚未设置新的 Int32 值。源="系统.数据"

所以我的解决方法是制作一个 TEMP 表并从中读取(或为该列设置一个默认值......这克服了错误,但仍将流氓表包含在结果集中)。

这里发生了什么?MSysNavPaneGroupCategories 甚至不应该进入结果集。

MSysNavPaneGroupCategories 系统表上没有太多信息。

这个 url说 MSysNavPaneGroupCategories 是三个系统表之一

定义导航窗格中的所有内容。

.. 在 Access 2007 中。

这个微软网址

导航窗格是 Microsoft Office Access 2007 中的新功能,是一个中心位置,您可以从中轻松查看和访问所有数据库对象(数据库对象:Access 数据库包含表、查询、表单、报表、页面、宏、和模块。Access 项目包含窗体、报表、页面、宏和模块等对象。)、运行报表或直接在表中输入数据。

...在 Access 2007 中。

当它是 Access 2007 功能时,为什么该表会显示在 Access 2K 数据库表列表中,为什么它会出现在与条件不匹配的查询中?

0 投票
2 回答
2107 浏览

c# - 打开与 Excel 文件的 OLEDB 连接时,Windows 服务挂起

在打开与 Excel 文件的 OLEDB 连接时,我有一个 Windows 服务挂起,如下所示:

此代码在作为控制台应用程序运行时运行良好。当我使用 Visual Studio 调试 Windows 服务时,我可以单步执行代码,直到调用 connection.Open()。此时,线程挂起。不会抛出异常。Visual Studio 保持响应,直到我点击“Break All”或“Stop Debugging”按钮。此时,Visual Studio 也会挂起。当我终止该进程时,Visual Studio 再次变得响应。

有谁知道为什么会发生这种情况以及如何解决?

编辑:文件名是绝对路径;该文件是由服务本身编写的。

0 投票
2 回答
4678 浏览

.net - SQLCommand/SQLConnection 与 OleDbCommand/OleDbConnection

我是否使用SQLCommand/SQLConnection而不是OleDbCommand/会有什么不同OleDbConnection。从 API 舒适性、功能、性能或安全性的角度来看,我是否从中获得了任何优势?或者有什么其他的观点?

0 投票
1 回答
5362 浏览

c# - OleDb 数据库到 DataSet 并在 c# 中返回?

我正在编写一个程序,让用户:

  1. 连接到用户指定的(任意)数据库
  2. 在单独的 DataGridViews 中查看该数据库中的所有表
  3. 在程序中编辑它们,生成随机数据,然后查看结果
  4. 选择提交这些更改或还原

所以我发现了 DataSet 类,它看起来能够像数据库一样保存所有内容,我决定在这里做的最好的事情是将所有内容加载到一个数据集中,让用户编辑它,然后保存数据集回到数据库。问题是我能找到加载数据库表的唯一方法是:

虽然似乎应该有一种更简单的方法,因为数据集似乎正是为此目的而设计的。真正的问题是当我尝试保存这些东西时。为了使用 OleDbDataAdapter.Update() 方法,我被告知我必须提供有效的 INSERT 查询。这不是否定了有一个班级为我处理这些东西的全部意义吗?

无论如何,我希望有人可以解释如何将数据库加载和保存到数据集中,或者让我更好地了解如何做我想做的事情。我总是可以自己一起解析命令,但这似乎不是最好的解决方案。

0 投票
4 回答
11351 浏览

c# - 如何强制 ADO.Net 在阅读器 TableSchema 中仅使用 System.String DataType

我正在使用 OleDbConnection 查询 Excel 2007 电子表格。我想强制 OleDbDataReader 仅使用字符串作为列数据类型。

系统正在查看前 8 行数据并推断数据类型为 Double。问题是,在第 9 行,我在该列中有一个字符串,并且 OleDbDataReader 返回 Null 值,因为它无法转换为 Double。

我使用了这些连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source="ExcelFile.xlsx";Persist Security Info=False;Extended Properties="Excel 12.0;IMEX=1;HDR=No"

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="ExcelFile.xlsx";Persist Security Info=False;Extended Properties="Excel 8.0;HDR=No;IMEX=1"

查看 reader.GetSchemaTable().Rows[7].ItemArray[5],它的 dataType 是 Double。

此架构中的第 7 行与我遇到问题的 Excel 中的特定列相关。ItemArray[5] 是它的 DataType 列

是否可以为阅读器创建自定义 TableSchema,以便在访问 ExcelFiles 时,我可以将所有单元格视为文本,而不是让系统尝试推断数据类型?


我在这个页面找到了一些很好的信息:使用 ADO.NET 阅读 Excel 电子表格的提示

ADO.NET 接口的主要特点是如何处理数据类型。(您会注意到,在阅读电子表格时,我一直在小心避免返回哪些数据类型的问题。)您准备好了吗?ADO.NET 扫描前 8 行数据,并据此猜测每列的数据类型。然后它会尝试将该列中的所有数据强制转换为该数据类型,只要强制失败就返回 NULL!

谢谢你,
基思


这是我的代码的简化版本:

0 投票
1 回答
346 浏览

c# - 无法将 aspx 中的日期更新为 MS-ACCESS 表

您好,我在更新数据类型时遇到问题

我像这样在 C# 部分中插入日期

但我像这样在 aspx 部分更新

我收到错误条件表达式中的数据类型不匹配似乎在 c# 部分中输入的类型与 aspx 部分中输入的类型之间存在一些类型差异

谁能帮我这个?