C# dBase IV出现奇怪错误,无法获取*.dbf作为表对象

C# dBase IV出现奇怪错误,无法获取*.dbf作为表对象,c#,oledb,jet,dbf,dbase,C#,Oledb,Jet,Dbf,Dbase,我正在尝试使用*.dbf dBase IV文件从它的shapefile文件中获取一些所需的地理数据 奇怪的是,dBase JET OleDb 4.0提供程序告诉我,没有这样的对象,但它确实存在 证明: 源代码: static void Test() { const string path = "C:\\buildings.dbf"; string conStr = String.Format("Provider = Microsoft.Jet.Ol

我正在尝试使用*.dbf dBase IV文件从它的shapefile文件中获取一些所需的地理数据

奇怪的是,dBase JET OleDb 4.0提供程序告诉我,没有这样的对象,但它确实存在

证明:

源代码:

    static void Test()
    {
        const string path = "C:\\buildings.dbf";
        string conStr = String.Format("Provider = Microsoft.Jet.Oledb.4.0; Data Source = {0}; Extended Properties = \"dBase IV\"", Path.GetDirectoryName(path));

        var connection = new OleDbConnection(conStr);
        connection.Open();

        var command = new OleDbCommand(string.Format("select NAME from {0}", Path.GetFileName(path)), connection);

        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                var str = (string)reader["NAME"];
            }
        }

        connection.Close();
    }

    static void Main()
    {
        try
        {
            Test();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc);
        }
    }

看起来你有一个很好的连接字符串。。。连接字符串应仅指向.dbf文件所在的路径。然而,即使是作为一个测试,将这个.dbf文件放在C:\的根目录下可能会造成问题,对于grins,我只想将它移到根目录下的一个子文件夹中,例如C:\test\buildings.dbf

接下来,查询一旦打开到当前路径的连接,就可以看到该路径中的任何.dbf表。你只需要

var command = new OleDbCommand("select NAME from buildings", connection);
.dbf隐含用于查询。唯一可能导致此问题的另一个问题是“NAME”是一个保留字,可能需要将NAME tics包装在它周围,以便它知道实际的列名而不是保留字


不同的提供商可能对tic标记有问题,因此您可能需要用[name]方括号括起来。

看来您的连接字符串很好。。。连接字符串应仅指向.dbf文件所在的路径。然而,即使是作为一个测试,将这个.dbf文件放在C:\的根目录下可能会造成问题,对于grins,我只想将它移到根目录下的一个子文件夹中,例如C:\test\buildings.dbf

接下来,查询一旦打开到当前路径的连接,就可以看到该路径中的任何.dbf表。你只需要

var command = new OleDbCommand("select NAME from buildings", connection);
.dbf隐含用于查询。唯一可能导致此问题的另一个问题是“NAME”是一个保留字,可能需要将NAME tics包装在它周围,以便它知道实际的列名而不是保留字


不同的提供商可能对tic标记有问题,因此您可能需要用[name]方括号括起来。

听起来有些小路径,您是否检查了生成的路径是否与您的本地路径匹配?@codebrain-proof在屏幕截图中,连接字符串是准确使用路径文件夹所必需的,不是JET/dBase提供程序提供的路径文件,要在SQL查询体中准确地使用该文件,它必须看起来像从文件中选择某个字段。dbfIt听起来有些小路径,是否检查生成的路径是否与本地路径匹配?@codebrain证据在屏幕截图中,连接字符串是准确使用路径文件夹所必需的,不是JET/dBase提供程序的路径文件,要在SQL查询体中准确使用该文件,它必须看起来像从file.dbf中选择某个字段