c# - 从 Excel 读取并将内容存储在数据库中 - 作为过程工作,但是从 C# 控制台应用程序执行时,它会中断
问题描述
所以标题是不言自明的。
我有一个执行并完成工作的存储过程。这是相关部分:
SELECT O.* FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'
, 'Excel 12.0; Database=D:\File.xlsx; HDR=YES'
, 'SELECT * FROM [Sheet1$]'
) AS O
所以“数据库”位置与控制台应用程序不在同一个文件夹中。不知道这是否有问题——我认为不应该。因此,从代码执行过程时:
using (SqlCommand command = new SqlCommand("CreateAndSeedTable", connection) { CommandType = CommandType.StoredProcedure })
抛出此错误(注意:所有其他程序运行良好):
未处理的异常:System.Data.SqlClient.SqlException:无法为链接服务器“(null)”初始化 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”的数据源对象。
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”返回消息“未指定错误”。
为什么从代码调用过程会引发错误?解决方法是什么?
解决方案
OPENROWSET 是一个 sql 函数,它在 sql 数据库服务器上运行。服务器进程必须能够读取 ACE 驱动程序和电子表格路径。
这真的是你打算做的吗?或者您是否希望您的 c# 控制台程序读取电子表格内容、处理它们并将它们发送到 sql 服务器?
推荐阅读
- angular - 向父组件发送数据表单
- java - 部署成功后的404
- botframework - 微软示例 52 -
- reactjs - 如何在firebase实时数据库和身份验证上生成相同的用户ID
- quarkus - Quarkus、Apache 目录 api、google libphonenumber 库不适用于本机
- sql - Oracle 中的转置功能
- php - Wordpress 类别页面在 URL 中显示类别和子类别
- netbeans - NetBeans Junit5 测试输出忽略 DisplayName 嵌套格式
- javascript - 如何修复 Express Route 处理程序中丢失的 SocketIO 会话数据?
- node.js - 让 Vue 应用程序正确读取 Heroku 上设置的环境变量的最佳方法是什么?