gpt4 book ai didi

C# 打开 DBF 文件

转载 作者:太空狗 更新时间:2023-10-29 20:01:47 25 4
gpt4 key购买 nike

我在打开 DBF 文件时遇到问题 - 我需要打开它,读取所有内容并处理它。我尝试了几种解决方案(ODBC/OLEDB)、几种连接字符串,但到目前为止没有任何效果。

问题是,当我执行 SQL 命令以从文件中获取所有内容时,没有返回任何内容 - 没有行。更奇怪的是,正在打开的 DBF 文件的内容被删除了。

查看我的代码:

public override bool OpenFile(string fileName, string subFileName = "")
{
OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Path.GetDirectoryName(fileName) + ";Extended Properties=dBASE IV;User ID=;Password=;");
try
{
if (con.State == ConnectionState.Closed) { con.Open(); }
OleDbDataAdapter da = new OleDbDataAdapter("select * from " + Path.GetFileName(fileName), con);
DataSet ds = new DataSet();
da.Fill(ds);
con.Close();
int i = ds.Tables[0].Rows.Count;
return true;
}
catch
{
return false;
}
}

我调试了代码并观察了在 Windows 资源管理器中打开的文件。当它到达这一行时:

da.Fill(ds);

文件的大小下降到只有几个字节(从数百 kB)。

我的下一个想法是将 DBF 文件设为只读。然而,这会导致“来自外部驱动程序的意外异常”。

所以我的问题是 - 到底是什么?我确定该文件没有损坏,它是从某个数据库直接导出的。 (不,我无权访问该数据库)。我也可以在 MS Office 中打开该文件,没问题。

我无法共享 DBF 文件 - 它包含 secret 数据。

最佳答案

有两件事...仅仅因为它的 .DBF 文件扩展名可能意味着它是 Dbase IV 文件。它实际上可能是 Visual Foxpro 的。也就是说,我会考虑从 Microsoft download 下载和安装 Visual Foxpro OleDB 驱动程序。 .接下来,OleDbConnection 指向具有实际表的路径(您已经有了)。

查询本身不应该关心扩展名,所以我会更改您的调用以通过“Path.GetFileNameWithoutExtension”获取刚刚的名称

可能是两者的结合。

VFP 提供程序的连接字符串

"Provider=VFPOLEDB.1;Data Source=" + FullPathToDatabase

关于C# 打开 DBF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7997641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com