4

我正在尝试使用 System.Data.Odbc.OdbcConnection 查询 DBF 文件。当文件中没有空格时它可以正常工作,但是如果文件路径或名称中有一个空格。

我正在使用以下代码:

oConn = new System.Data.Odbc.OdbcConnection(); oConn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=NA;Exclusive=No; Collat​​e=Machine;NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;";

oCmd.CommandText = "SELECT * FROM C:\test 2\12345678.dbf";

命令文本不是硬编码的。为了简单起见,我只是以这种方式包含它。该应用程序设置为允许用户选择一个 DBF 文件并让它显示它。我无法控制用户存储 DBF 文件的位置,并且不想让他们记住不要在文件名/路径中放置空格。

如何转义文件名/路径中的空格?

4

2 回答 2

3

可能是与“MS-DOS 8.3 文件名格式”有关的问题。您可以查看以下链接:

于 2010-06-30T16:24:49.707 回答
3

我也遇到了这个问题。这是我在 Google 中的第一名,所以我不是很有希望。但是,通过将当前目录更改为有问题的目录,然后排除 CommandText 中的路径,我们能够让我的代码正常工作:

//Save the current directory
string currentDir = System.IO.Directory.GetCurrentDirectory();

//Select the path that we need to use
System.IO.Directory.SetCurrentDirectory("C:\\test 2\\");

//Now the path isn't required:
oCmd.CommandText = @"SELECT * FROM 12345678.dbf";

//Restore the old directory
System.IO.Directory.SetCurrentDirectory(currentDir);

您仍然受到文件名的限制(我认为没有空格和 <= 8 字符),但这是我可以使用的。

于 2010-10-29T18:04:17.400 回答