Извините за смутный заголовок, но я не уверен, как лучше его произнести.
В принципе, проблема, с которой я столкнулся, заключается в том, что я изначально использовал oledbconnection в C#, чтобы инициировать подключиться к электронной таблице, запросить ее и загрузить результаты в таблицу данных. net. К сожалению, он достигает максимум 255 полей, а у меня около 600.
Итак, вместо этого я создал набор данных и попытался загрузить 4 отдельные таблицы данных с отдельными запросами. Теперь по какой-то причине, что для меня безумно, если я загружу, скажем, первую таблицу данных с 190 полями, а затем я go снова, чтобы запросить электронную таблицу, если я go превышает эту отметку 250 (которую я осталось 60), я получаю следующую ошибку:
Исключение типа 'System.Data.OleDb.OleDbException' произошло в System.Data.dll, но не было обработано в коде пользователя
Дополнительная информация: для одного или нескольких обязательных параметров не задано значение.
Если я уменьшу количество полей во второй таблице до значения меньше 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();