Как указать числовую ширину и точность при создании базы данных dBase?

Нам нужна возможность создать базу данных dBase (файл .dbf), содержащую числовые столбцы с определенной шириной и точностью. Кажется, я могу установить точность, но не ширину. Следующий код показывает мою строку подключения и мой текст команды.

using (OleDbConnection oConnection = new OleDbConnection(String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source = {0};Extended Properties=dBase 5.0", msPath)))
{

  ....

  oCommand.CommandText = "CREATE TABLE [Field] ([Id] Numeric (15, 3))";
  oCommand.ExecuteNonQuery();
}

Это дает мне столбец Id,20,3 в файле.

Должен ли быть способ установить ширину поля, не прибегая к редактированию файла .dbf вручную? Никто не сталкивался с этим раньше при создании шейп-файлов?


person stevehipwell    schedule 13.04.2010    source источник
comment
@Андрей Калашников - Нет, мы так и не решили эту проблему. Потребители наших шейп-файлов ослабили свои требования.   -  person stevehipwell    schedule 28.03.2011


Ответы (2)


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

person stevehipwell    schedule 18.07.2012

Вы можете использовать поставщик Microsoft OLE DB.

Используйте следующее соединение:

connectionString = @"Provider=vfpoledb.1;Data Source=" + path + ";Collating Sequence=machine;";

и вы запрашиваете:

comm.CommandText = "Create table Test (FirstName Numeric(4,0),LastName Char(50) )"
person DiegoLopez    schedule 17.06.2015