我正在尝试在程序中从头开始编写DBF文件。我想创建它,添加一些列,然后将数据添加到X列的次数。我的程序不需要再读它,但其他程序会。
我已经四处寻找解决方案,但似乎都假设现有的DBF文件,而我想创建一个新文件。
这样做的目的是使DBF成为ESRI ShapeFile的一部分。
有谁知道怎么做?
答案 0 :(得分:10)
下载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();
}
答案 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();
}
答案 2 :(得分:1)
如果要完全消除外部依赖关系,则必须手动创建文件。为了做到这一点,您需要花一些时间在描述文件格式规范的白皮书上,以了解您需要实现的字段以及它们应包含的内容。您可以在此处在线找到:http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
当然,这对于胆小的人来说并不是真正的事。在开始旅程之前,请确保您了解此处所需的工作。