2011-02-08 4 views
9

내 프로그램에서 처음부터 DBF 파일을 작성하려고합니다. 나는 그것을 만들고, 몇 개의 열을 추가 한 다음 X 열에 데이터를 추가하려고합니다. 내 프로그램은 다시 읽지 않아도되지만 다른 프로그램도 읽습니다.C#에서 처음부터 DBF 파일을 만드는 방법은?

나는 이것에 대한 해결책을 찾아 보았지만 새로운 DBF 파일을 만들고 싶지만 기존의 DBF 파일을 사용하는 것으로 보인다.

이 목적은 ESRI ShapeFile의 DBF 부분을 만드는 것입니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

+0

내가 볼 수있는 유일한 옵션은 vfpoledb 공급자를 사용하여 직접'create table' 명령을 내리는 것입니다. 번거 롭긴하지만 효과가있을 수 있습니다. – alex

+0

방금 ​​** dBase IV ** 형식의 DBF 파일이 필요하다는 것을 알았으므로 내 대답을 편집했습니다. 그것을 사용해보십시오, GIS와 함께 작동해야합니다 (MS Access로 여는 지 확실하지 않습니다). –

답변

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

편집 : 여기

는 VFP OLEDB 공급자를 사용하는 예제입니다 FoxPro에 DBF 형식 만 디베이스 IV를하지 않습니다 OP 형식 :

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

Note : 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를 만들 수 있습니다.

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(); 
    } 
관련 문제