OleDB всегда добавляет еще одну цифру в числовые поля DBF при их создании. Команда вроде этого: CREATE TABLE [file1.DBF] ([MY_FIELD] NUMERIC(1,0) NULL)
создаст поле, которое может содержать 2 цифры (или одну цифру и знак минуса). Самое смешное, что я могу запросить такую длину NUMERIC(0,0)
, и она создаст поле длиной 1.Ширина цифрового поля в DBF-файле несовместима при создании с помощью oleDB (.NET)
Не удалось найти документацию о данном действии.
Является ли это специфическим для использования oleDB для создания DBF или то же самое может случиться с другой БД?
Дополнительная цифра, добавленная oleDB, предназначена только для обработки знака «минус»?
Согласуется ли это с поведением? Я имею в виду, могу ли я просто вычитать одну ширину при создании таблицы?
Edit: Этот вопрос в значительной степени был дан ответ здесь: http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/af245580-8897-4608-8fa0-f00286d37324?prof=required
Я не вижу, как это может быть основано на нулевом значении по сравнению с одной проблемой, помимо какой-то ошибки в реализации, которая использовала бы массив для некоторых манипуляций. Число, которое мы укажем, является размером, а не индексом. Это будет означать, что в какой-то момент это интерпретируется как индекс. –