ManojRGEC Ответов: 2

Если имя файла имеет дополнительную точку, получающую исключение в C#, Jet connection string template


Если имя файла имеет дополнительный символ точки, как показано ниже:

sample.data. csv следующая инструкция select:

Выбрать * из [образец.данных.КШМ]
со строкой подключения :

Поставщик=Майкрософт.Джет.Oledb для.4.0;Источник данных="\ C:\Data"; расширенные свойства="текст;режим HDR=да;формат=запятыми;";
Получаю ниже исключение:

Microsoft Jet database engine не удалось найти объект "образец"

Что я уже пробовал:

If file name has additional dot character like below:

sample.data.csv next select statement:

SELECT * FROM [sample.data.csv]
with connection string:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Data\"; Extended Properties="text;HDR=Yes;Format=Delimited;";
Getting below exception:

The Microsoft Jet database engine could not find the object 'sample'

2 Ответов

Рейтинг:
2

ManojRGEC

Мое имя файла содержит дополнительную точку (.), как указано ниже. Я использую строку подключения Oledb, приведенную ниже.
строки общественные константные ConnectionStringTemplateJet = @"поставщика=Майкрософт.Джет.Oledb для.4.0;Источник данных={0};расширенные свойства=в dBase IV в;";


Получение ошибки в методе ExecuteReader()

_dbConnection = new OleDbConnection(connectionString);
_dbConnection.Открыть();
_dbCommand = новый объект oledbcommand(selectString, _dbConnection);
_dbReader = _dbCommand.Метода executereader();

Richard MacCutchan

Это не правильный способ сделать это. Перейдите по ссылке, которую я вам дал, и посмотрите, как получить правильное имя таблицы от драйвера.

Richard MacCutchan

Когда файл будет импортирован, он заменит точки На # символы для создания имени таблицы. Таким образом, ваше имя таблицы будет sample#data#csv.

Рейтинг:
0

OriginalGriff

См. документацию: Ограничения Имен Таблиц | Microsoft Docs[^]

Цитата:
Имена таблиц могут содержать любые допустимые символы (например, пробелы). Если имена таблиц содержат какие-либо символы, кроме букв, цифр и символов подчеркивания, имя должно быть разделено, заключив его в обратные кавычки (`).

Так что попробуй:
SELECT * FROM `sample.data.csv`


ManojRGEC

Спасибо за ответ, но он не работает для меня. Я получаю ту же ошибку, что и "Microsoft Jet database engine не смог найти объект "sample.data". Убедитесь, что объект существует и что вы правильно пишете его имя и путь."

Richard MacCutchan

Текст/csv обрабатываются OLEDB по-разному, см. мои комментарии ниже.