我正在尝试使用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; Collate = Machine; NULL = NO; DELETED = NO; BACKGROUNDFETCH = NO;”;
oCmd.CommandText =“SELECT * FROM C:\ test 2 \ 12345678.dbf”;
命令文本不是硬编码的。为了简单起见,我只是将它包含在内。应用程序设置为允许用户选择DBF文件并让它显示它。我无法控制用户存储DBF文件的位置,而是不必让他们记住不要在文件名/路径中放置空格。
如何在文件名/路径中转义空格?
答案 0 :(得分:3)
可能是与“MS-DOS 8.3文件名格式”相关的问题。 您可以查看下一个链接:
答案 1 :(得分: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),但这是我可以使用的。