Почему я не могу получить доступ к моей таблице ODBC dBase?
Я унаследовал некоторый код C#. Он обрабатывает старые файлы dBase. Никто не трогал код по крайней мере 3-5 лет, и где-то там работает скомпилированная версия, но у меня нет к ней доступа. Теперь, когда я пытаюсь понять, как это работает, перекомпилировав его из исходного кода в той же среде, в которой он должен работать (та же архитектура, достаточное количество драйверов), я получаю следующую ошибку:
[42S02] [Microsoft][ODBC dBase driver] A Microsoft Jet database engine could not find the object 'test'. Make sure the object exists and that you spell its name and the path name correctly.
(РЕДАКТИРОВАТЬ) на второй строке
dbCommand.CommandText = "SELECT Count(*) FROM test";
recNum = (int)dbCommand.ExecuteScalar();
(РЕДАКТИРОВАТЬ) со строкой подключения
OdbcConnection connection = new OdbcConnection(String.Format("driver={{Microsoft dBase Driver (*.dbf)}};DriverID=533;Dbq={0};Exclusive=1;", path));
Я попробовал очевидные решения, найденные в Google, такие как проверка, действительно ли файл там, изменение имени файла и т. Д. Итак, я уверен, что файл находится там, где он должен быть, я уверен, что файл не поврежден (я могу открыть его с помощью некоторой условно-бесплатной программы, которую я скачал из Интернета, не говоря уже о том, что файл не изменился за последние 3-5 лет). Это мой первый раз с dBase и ODBC, поэтому я могу просто пропустить что-то, что должно быть очевидным.
Что еще я мог попытаться заставить это работать?
2 ответа
Проверьте, настроен ли источник данных ODBC (Пуск> Настройка> Панель управления> ODBC). Имя источника данных должно быть включено в строку подключения для вашего объекта подключения. Тест таблицы должен быть таблицей базы данных, на которую указывает настроенный источник данных.
Так много людей любят использовать Jet на старых файлах.dbf, но на самом деле они могут быть не dBASE, а фактически Foxpro (немного другая информация заголовка). Возможно, вам действительно потребуется загрузить и работать с поставщиком VFP OleDB.
Я ответил на предыдущие вопросы, которые помогают показать / описать соединения, кроме того, ссылку на Microsoft, чтобы получить / скачать последнюю версию поставщика Visual Foxpro OleDB.
Просто примечание в строке подключения. Даже если файл.dbf НЕ является частью "базы данных", но является свободной таблицей, вам нужно подключиться к физическому PATH, в котором находятся данные, ТОГДА просто запросить на основе имени таблицы, чтобы получить ваши данные.