c#如何清除OLEDB连接缓存,多个excel查询出错
很抱歉标题含糊不清,但我不知道该怎么说才好 基本上,我遇到的问题是,我最初使用C#中的oledbconnection启动到电子表格的连接,查询它,并将结果加载到.net数据表中。不幸的是,它的最大值是255个字段,我有大约600个字段 因此,我所做的是创建一个数据集,并尝试用单独的查询加载4个单独的数据表。现在出于某种原因,让我疯狂的是,如果我加载第一个包含190个字段的数据表,然后我继续再次查询电子表格,如果超过250分(剩下60分),我会得到以下错误:c#如何清除OLEDB连接缓存,多个excel查询出错,c#,excel,C#,Excel,很抱歉标题含糊不清,但我不知道该怎么说才好 基本上,我遇到的问题是,我最初使用C#中的oledbconnection启动到电子表格的连接,查询它,并将结果加载到.net数据表中。不幸的是,它的最大值是255个字段,我有大约600个字段 因此,我所做的是创建一个数据集,并尝试用单独的查询加载4个单独的数据表。现在出于某种原因,让我疯狂的是,如果我加载第一个包含190个字段的数据表,然后我继续再次查询电子表格,如果超过250分(剩下60分),我会得到以下错误: System.Data.dll中发生
System.Data.dll中发生“System.Data.OleDb.OledBeException”类型的异常,但未在用户代码中处理 附加信息:没有为一个或多个必需参数提供值。 但是,如果我将第二个表中的字段数量减少到小于250,则它会起作用。无论如何,有没有一种方法可以让我以某种方式清除OLEDB连接的缓存,以某种方式删除前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();
按顺序构造、使用和处理数据适配器有效吗?我可以试着试一试。-事实上不,我没有试过,不幸的是,同样的问题。也许这可以作为你的答案:这看起来确实很奇怪。我看到的代码没有明显的错误。您不想只使用多个连接有什么原因吗?太慢了?@Zer0我只是觉得重复打开一个连接不止一次是不好的做法。我可能不得不尝试一下。按顺序构建、使用和处理数据适配器是否有效?我可以试着试一试。-事实上不,我没有试过,不幸的是,同样的问题。也许这可以成为你的答案:这看起来确实很奇怪。我看到的代码没有明显的错误。您不想只使用多个连接有什么原因吗?太慢了?@Zer0我只是觉得重复打开一个连接不止一次是不好的做法。我可能得试试。