当文件路径/名称有空格时,使用System.Data.Odbc.OdbcConnection查询DBF文件

我正在尝试使用System.Data.Odbc.OdbcConnection查询DBF文件。当文件中没有空格时,它可以正常工作,但是我收到以下错误“打开DBF文件时出错:错误[42000] [Microsoft] [ODBC dBase驱动程序] FROM子句中的语法错误”如果文件路径或name中有一个空格。 我正在使用以下代码: 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文件的位置,而不必让他们记住不要在文件名/路径中放置空格。 如何转义文件名/路径中的空格?     
已邀请:
可能是与“MS-DOS 8.3文件名格式”相关的问题。 您可以查看下一个链接: Microsoft支持:导入dBASE,FoxPro或Paradox文件时收到错误消息 维基百科:8.3文件名(这里说它按惯例不允许空格)     
我也遇到了这个问题。这是我在谷歌的第一次打击,所以我不是很有希望。但是,我们能够通过将当前目录更改为有问题的目录,然后排除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 char),但这是我可以使用的东西。     

要回复问题请先登录注册