C# dBase IV出现奇怪错误,无法获取*.dbf作为表对象
我正在尝试使用*.dbf dBase IV文件从它的shapefile文件中获取一些所需的地理数据 奇怪的是,dBase JET OleDb 4.0提供程序告诉我,没有这样的对象,但它确实存在 证明: 源代码: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
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中选择某个字段