[英]OleDbDataReader cmd.ExecuteReader() “Enumeration Yielded No Results”
我試圖從Excel文件中獲取數據並將其設置在數據庫中
var path = GetPath(activityId);
path = Path.Combine(path, fileName);
var strConnection = GetConnectionString();
var excelConnString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0\"", path);
using (OleDbConnection excelConnection = new OleDbConnection(excelConnString))
{
excelConnection.Open();
DataTable dtSchema = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string firstSheetName = dtSchema.Rows[0]["TABLE_NAME"].ToString();
using (OleDbCommand cmd = new OleDbCommand("Select * from [" + firstSheetName + "]" , excelConnection))
{
using (OleDbDataReader dReader = cmd.ExecuteReader())
{
using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
{
sqlBulk.DestinationTableName = tableName;
while (dReader.Read())
{
sqlBulk.WriteToServer(dReader);
}
}
}
}
但是當我調試sqlBulk.WriteToServer(dReader);
我也顯示此錯誤,數據也沒有加載到表中:
空=“枚舉沒有結果”
我嘗試了很多答案但沒有成功
注意:我上傳的Excel字段和表格看起來相同
我通過更改如下代碼(使用OleDbDataAdapter
而不是OleDbDataReader
)解決了此問題:
DataTable Contents = new DataTable();
using (OleDbDataAdapter cmd = new OleDbDataAdapter("Select * from [" + firstSheetName + "]", excelConnection))
{
cmd.Fill(Contents);
using (SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection))
{
sqlBulk.DestinationTableName = tableName;
sqlBulk.WriteToServer(Contents);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.