Ошибка IErrorInfo.GetDescription с E_FAIL(0x80004005).System.Data при заполнении адаптера данных()

Я пытаюсь получить данные из CSV-файла, используя метод fill(), я получил исключение idk, почему оно возникает, пожалуйста, просмотрите код и предложите оптимистичный ответ. обратите внимание, что если параметр «s» не имеет пробела, значит, он работает отлично. если в нем есть место, значит, как это преодолеть, не предлагайте временное переименование и все такое.

/// <summary>
/// Import Function For CSV Delimeted File
/// </summary>
/// <param name="s">File Name</param>
private DataTable Import4csv(string s)
{
    string file = Path.GetFileName(s);
    string dir = Path.GetDirectoryName(s);
    string sConnection = "Provider=Microsoft.Jet.OLEDB.4.0;"
                             + "Data Source=\"" + dir + "\\\";"
                             + "Extended Properties=\"text;HDR=YES;FMT=Delimited\"";
    try
    {
        var objConn = new OleDbConnection(sConnection);
        objConn.Open();
        var ds = new DataSet();
        var da = new OleDbDataAdapter("SELECT * FROM " + file, sConnection);
        da.Fill(ds);        // getting exception on this line.
        objConn.Close();
        return ds.Tables[0];
    }
    catch (Exception ex)
    {
        Trace.WriteLine(ex.Message + ex.Source);
        return null;
    }
}

person arun kumar non ascii    schedule 23.06.2011    source источник


Ответы (3)


var da = new OleDbDataAdapter("SELECT * FROM `" + file + "`", sConnection);

рядом с тильдой..

person shobhonk    schedule 21.07.2011
comment
исправлено, вам нужно использовать символ `до и после имени файла, содержащего пробелы - person shobhonk; 21.07.2011

Я столкнулся с той же проблемой, но смог ее решить, заключив подозрительное слово в квадратные скобки.

В моем случае это было имя поля, которое я использовал в условии «Где», т.е.;

select * from tblDetail where [Section] = 'Operations'
person Jerrin Joseph    schedule 20.01.2013

В моем случае замена всех имен полей в запросе на * решила проблему.

person Alex Jolig    schedule 18.10.2015