Как создать файл DBF с нуля в C #? - PullRequest
9 голосов
/ 08 февраля 2011

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

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

Цель этого - сделать DBF частью ShapeFile ESRI.

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

10 голосов
/ 08 февраля 2011

Скачать Поставщик Microsoft OLE DB для Visual FoxPro 9.0 и использовать:

string connectionString = @"Provider=VFPOLEDB.1;Data Source=D:\temp";
using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = connection.CreateCommand())
{
    connection.Open();

    OleDbParameter script = new OleDbParameter("script", @"CREATE TABLE Test (Id I, Changed D, Name C(100))");

    command.CommandType = CommandType.StoredProcedure;
    command.CommandText = "ExecScript";
    command.Parameters.Add(script);
    command.ExecuteNonQuery();
}

Редактировать : ОП не хочет формат FoxPro DBF, но dBase IV формат:

string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp;Extended Properties=dBase IV";

using (OleDbConnection connection = new OleDbConnection(connectionString))
using (OleDbCommand command = connection.CreateCommand())
{
    connection.Open();

    command.CommandText = "CREATE TABLE Test (Id Integer, Changed Double, Name Text)";
    command.ExecuteNonQuery();
}
2 голосов
/ 08 февраля 2011

Я ничего не знаю о ESRI ShapeFile ... но вы можете создать dbf, используя OleDb.

Вот пример использования провайдера VFP OleDb:

    string dbfDirectory = @"c:\";
    string connectionString = "Provider=VFPOLEDB;Data Source=" + dbfDirectory;
    using (OleDbConnection connection = new OleDbConnection(connectionString)) {
        connection.Open();
        OleDbCommand command = connection.CreateCommand();

        command.CommandText = "create table Customer(CustId int, CustName v(250))";
        command.ExecuteNonQuery();
        connection.Close();
    }
1 голос
/ 08 февраля 2011

Если вы хотите полностью устранить внешние зависимости, вам придется прибегнуть к созданию файла вручную. И чтобы сделать это, вам нужно потратить некоторое время на подготовку технического документа, описывающего спецификации формата файла, чтобы понять, какие области необходимо реализовать и что они должны содержать. Вы можете найти это онлайн здесь: http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

Конечно, это не совсем дело для слабонервных. Прежде чем отправиться в путешествие, убедитесь, что вы понимаете работу, которая влечет за собой здесь.

...