2011-02-08 12 views
9

私は自分のプログラムに最初からDBFファイルを書き込もうとしています。私はそれを作成し、いくつかの列を追加し、X列にデータを追加したい。私のプログラムはそれをもう一度読む必要はありませんが、他のプログラムはそれを行います。C#でゼロからDBFファイルを作成するには?

私はこれを解決する方法を検討しましたが、新しいものを作りたいのですが、すべて既存のDBFファイルを想定しているようです。

この目的は、ESRIシェイプファイルのDBF部分を作成することです。

誰でもこれを行う方法を知っていますか?

+0

私が見る唯一のオプションは、 'create table'コマンドをvfpoledbプロバイダを使って直接発行することです。面倒ですが、うまくいくかもしれません。 – alex

+0

DBFファイルが** dBase IV **形式であることがわかりましたので、私の答えを編集しました。それを試してみてください、GISで動作するはずです。 –

答えて

9

ダウンロードMicrosoft OLE DB Provider for 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(); 
} 

編集: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(); 
} 
+0

「Microsoft OLE DB Provider for Visual FoxPro 9.0」が.NET Frameworkに組み込まれているとはどうでしょうか?これは、Microsoft Excelを使用して重労働を行うという私の提案よりも組み込みのものではありません。 (しかし、はい、+1、それでも私よりも良い提案です) –

+0

注: 'ExecScript'コマンドは、テーブルファイルを他のフォーマットにもコピーするのに使うことができます。 @Cody:ありがとうございます。まあ、インターフェイスが組み込まれている、プロバイダがないかもしれません。とにかくダウンロードリンクを追加しました。 –

+0

ありがとうございます。私はこれを試してみましたが、私がAccessでそれを開こうとすると "外部テーブルが期待どおりのフォーマットではありません"と言います。何か案は? – Greg

1

外部依存関係を完全に排除するには、手動でファイルを作成する必要があります。そのためには、実装する必要のあるフィールドとその内容を理解するために、ファイル形式の仕様を記述したホワイトペーパーで質の高い時間を費やす必要があります。ここにオンラインで見つけることができます:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf

もちろん、これは本当に心のかすかなものではありません。あなたが旅に乗る前にここで遂行されている作業を理解していることを確認してください。

+0

-1:実際にはサポートがあります。 –

+0

@Jaroslav:私たちは心配してあなたの差し迫った答えを待っています。 –

+0

私は-1を削除しました。 –

2

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(); 
    } 
関連する問題