c# - c#如何清除oledbconnection缓存,多个excel查询报错
问题描述
抱歉标题含糊不清,但我不确定如何最好地表达它。
基本上,我遇到的问题是我最初在 C# 中使用 oledbconnection 来启动与电子表格的连接、查询它并将结果加载到 .net 数据表中。不幸的是,它最多有 255 个字段,而我大约有 600 个。
因此,我所做的是创建了一个数据集并尝试使用单独的查询加载 4 个单独的数据表。现在由于某种原因,对我来说很疯狂的是,如果我加载第一个包含 190 个字段的数据表,然后我继续查询电子表格,如果我超过 250 标记(我有 60左),我收到以下错误:
System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的异常,但未在用户代码中处理
附加信息:没有为一个或多个必需参数提供值。
如果我将第二个表中的字段数量减少到小于 250,它就可以工作。无论如何,有没有一种方法可以清除 oledbconnection 的缓存,以某种方式删除前 190 个字段或保存 excel 查询结果的任何内容,以便我可以继续下一个?我尝试做一个数据适配器处置,但没有奏效,同样的问题。如果我执行connection.dispose,无论如何我都必须重新初始化连接。有没有办法我仍然可以做到这一点而不必断开连接?下面的代码:
OleDbConnection cnn = new OleDbConnection(Settings.ExcelCN);
OleDbCommand fillT1 = new OleDbCommand(Settings.Excel_Proj_Select_1, cnn);
OleDbCommand fillT2 = new OleDbCommand(Settings.Excel_Proj_Select_2, cnn);
OleDbCommand fillT3 = new OleDbCommand(Settings.Excel_Proj_Select_3, cnn);
OleDbCommand fillT4 = new OleDbCommand(Settings.Excel_Proj_Select_4, cnn);
OleDbCommand updateCnt = new OleDbCommand(Settings.Excel_Update_Count_Select, cnn);
cnn.Open();
OleDbDataAdapter adp1 = new OleDbDataAdapter(fillT1);
OleDbDataAdapter adp2 = new OleDbDataAdapter(fillT2);
OleDbDataAdapter adp3 = new OleDbDataAdapter(fillT3);
OleDbDataAdapter adp4 = new OleDbDataAdapter(fillT4);
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
DataTable dt3 = new DataTable();
DataTable dt4 = new DataTable();
DataSet ds1 = new DataSet();
adp1.Fill(dt1);
ds1.Tables.Add(dt1);
adp2.Fill(dt2);
ds1.Tables.Add(dt2);
adp3.Fill(dt3);
ds1.Tables.Add(dt3);
adp4.Fill(dt4);
ds1.Tables.Add(dt4);
int rowcount = updateCnt.ExecuteNonQuery();
cnn.Close();
解决方案
推荐阅读
- python - Django - 如何以子类形式而不是父类形式返回 QuerySet 中的所有对象?
- node.js - 在mongoDB中进行分层路由时如何访问父模块
- java - 如何在 Java 应用程序中连接到 Telegram Bot API 时修复 SocketException
- javascript - 如何在 Lodash _.times 函数中使用异步等待?
- java - 如何绘制如下图所示的形状
- artifactory - 将工件从远程存储库移动到本地存储库
- dns - Nginx反向代理重启后无法通过内部路由到达应用
- node.js - 使用 signedURL 将 base64 文件上传到 GCS
- google-apps-script - GmailApp每次都不会向gmail帐户发送电子邮件
- c# - VS Code 中缺少集成终端?