Search code examples
c#.net.net-2.0dbf

How to create a DBF file from scratch in C#?


I am trying to write a DBF file from scratch in my program. I want to create it, add some columns, and then add data to the columns X amount of times. My program will not need to read it in again, but other programs will.

I've looked around for a solution to this, but all seem to assume an existing DBF file, whereas I want to make a new one.

The purpose of this is to make the DBF part of an ESRI ShapeFile.

Does anyone know how to do this?


Solution

  • Download Microsoft OLE DB Provider for Visual FoxPro 9.0 and use:

    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();
    }
    

    Edit: The OP does not want a FoxPro DBF format but dBase IV format:

    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();
    }