2010-03-26 3 views
0

Я получаю следующую ошибку в моем коде (C#, .Net 3.5, VS2008) при попытке подключиться к листу Excel и заполнить OleDbDataAdapter результатами запроса. Первая ошибка:Странная ошибка при заполнении адаптера данных

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

А вот код, который честно довольно просто:

var excelFileName = @"c:\Metadata_Tool.xlsm"; 
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties=Excel 12.0;HDR=YES;", excelFileName); 

var adapter = new OleDbDataAdapter("Select * FROM [Video Tagging XML]", connectionString); 
var ds = new DataSet(); 

adapter.Fill(ds, "VTX"); 

DataTable data = ds.Tables["VTX"]; 

foreach (DataRow myRow in data.Rows) 
{ 
    foreach (DataColumn myColumn in data.Columns) 
    { 
     Console.Write("\t{0}", myRow[myColumn]); 
    } 
    Console.WriteLine(); 
} 

Console.ReadLine(); 

Я получаю ошибку на линии adapter.Fill(ds,"VTX");. Я нашел сообщение на форуме в Microsoftsoft, чтобы включить оптимизацию JIT в VS2008 из меню Tools/Options/Debug/General, но это, похоже, не помогло. Любая помощь будет принята с благодарностью!

ответ

2

Ошибка возникает изнутри поставщика ACE. Я предполагаю, что это потому, что ваша строка подключения неверна.

Вместо:

var excelFileName = "c:/Metadata_Tool.xlsm"; 

Вы должны иметь:

var excelFileName = @"c:\Metadata_Tool.xlsm"; 

Примечание обратный слеш вместо прямой косой черты. Вам нужен символ @ спереди, чтобы избежать экранирования обратной косой черты. Вам также не нужен string.Format - вы ничего не форматируете в этой строке.

+0

Я дал это попробовать, и хотя вы правы в отношении форматирования, к сожалению, это не решило проблему. Я получаю ту же ошибку. –

+0

@Tim C: Вы уверены, что файл есть? С использованием правильных разрешений? Вы пытались открыть его в Excel? Вы пробовали этот же код в новом, незаполненном файле Excel, который вы создали вручную только с несколькими строками? – Aaronaught

+0

Кажется, что с файлом Excel! Файл находился в правильном месте и имел все разрешения, но когда я перешел на другой файл, он работал нормально. Что-то испорчено этим. Спасибо! –

Смежные вопросы