1

ディレクトリ名にスペースがない場合、次の作品を使用して

文字列 file1 の場合、文字列 file2 でリーダーを実行し、例外を作成しますか? 一部のクライアントのパスにスペースが含まれるフォルダーにアクセスする必要があります。

file1 = "C:\\test1\\file.dbf";
file2 = "C:\\test 2\\file.dbf";

OdbcConnection Connection = new OdbcConnection();
Connection.ConnectionString = @"Driver={Microsoft Visual FoxPro Driver};Exclusive=No;SourceType=DBF;SourceDB=" + strFilename + ";";
Connection.Open();

OdbcCommand Command = Connection.CreateCommand();
Command.CommandText = @"SELECT * FROM " + file1; //Command.CommandText = @"SELECT * FROM " + file2;

一度 Connection.Open(); を実行します。正しく開き、

OdbcDataReader Reader = Command.ExecuteReader(); を実行したら、

{System.Data.Odbc.OdbcException: エラー [ 42S02 ] [Microsoft][ODBC Visual FoxPro Driver]File 'file2.dbf' が存在しません。


担当者が足りないので回答

私の問題を解決してくれた皆さんの貢献に感謝します。解決策として、(スペースを含む) フル パスを入力し、@ char を使用してリテラル文字列にする必要がありました。何らかの理由で、エスケープ文字 ("\"") で引用符を付けてリテラルにしても解決しませんでした。

要約すると、接続文字列とコマンド文字列のパスの前に @ を使用しました。

strFilename = S.ImportFolder + "\\" +"file"+ ".dbf";

OdbcConnection Connection = new OdbcConnection();
Connection.ConnectionString = @"Driver={Microsoft Visual FoxPro Driver};Exclusive=No;SourceType=DBF;SourceDB="+@strFilename+";";
Connection.Open();

OdbcCommand Command = Connection.CreateCommand();
Command.CommandText = @"SELECT * FROM "+ @strFilename;

OdbcDataReader Reader = Command.ExecuteReader();
4

1 に答える 1

3

パスを引用符で囲もうとしましたか?

Connection.ConnectionString = @"Driver={Microsoft Visual FoxPro Driver};Exclusive=No;SourceType=DBF;SourceDB=""" + strFilename + """;";
于 2012-10-16T15:42:24.463 に答える