我在导出 shapefile 数据时无法创建 dbf 文件。大多数情况下它可以工作,但有时它只会引发以下错误,即使该文件尚不存在:
Microsoft Jet 数据库引擎无法打开文件“C:\Test\258ba2f1-cc05-4a21-a047-ef060c46a3ca\data\tablename.DBF”。它已被其他用户独占打开,或者您需要权限才能查看其数据。
代码看起来像这样:
using (var dBaseConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databasePath + ";Extended Properties=dBASE IV;"))
{
var createTableString = "Create Table " + tableName + ".dbf (p_id char(10), answered char(20), mnote char(50), descr char(50), grade char(50))";
var cmd = new OleDbCommand(createTableString, dBaseConnection);
dBaseConnection.Open();
cmd.ExecuteNonQuery();
这只发生在我使用 Microsoft Jet 数据库引擎时。使用 Visual FoxPro 会创建一个名为“_NullFlags”的附加列,并且 dbf 文件不适用于任何 GIS 软件。
有任何想法吗?