如何在C#中从头开始创建DBF文件?

我试图在我的程序中从头开始编写DBF文件。 我想创建它,添加一些列,然后将数据添加到列X次。 我的程序不需要再读它,但其他程序会。

我一直在寻找解决方案,但似乎所有人都假设现有的DBF文件,而我想创建一个新文件。

这样做的目的是使DBF成为ESRI ShapeFile的一部分。

有谁知道如何做到这一点?

下载用于Visual FoxPro 9.0的Microsoft OLE DB提供程序并使用:

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

编辑 :OP不需要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(); } 

我对ESRI ShapeFile一无所知……但你可以使用OleDb创建一个dbf。

以下是使用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(); } 

如果要完全消除外部依赖关系,则必须手动创建文件。 为了做到这一点,您需要花一些时间在白皮书上描述文件格式的规范,以了解您需要实现的字段以及它们应包含的内容。 你可以在这里找到它: http : //www.esri.com/library/whitepapers/pdfs/shapefile.pdf

当然,这对于胆小的人来说并不是真正的事。 在开始旅程之前,请确保您了解此处所需的工作。