簡體   English   中英

如何在C#中從頭開始創建DBF文件?

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

我試圖在我的程序中從頭開始編寫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

當然,這對於膽小的人來說並不是真正的事。 在開始旅程之前,請確保您了解此處所需的工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM