Interrogazione di file DBF con System.Data.Odbc.OdbcConnection quando il percorso del file / nome, dispone di spazi

StackOverflow https://stackoverflow.com/questions/3151073

  •  01-10-2019
  •  | 
  •  

Domanda

Sto cercando di interrogare un file DBF utilizzando System.Data.Odbc.OdbcConnection. Esso funziona correttamente quando il file non dispone di uno spazio in esso, ma ottengo il seguente "File apertura Errore DBF: ERRORE [42000] [Microsoft] [ODBC dBase Driver] Errore di sintassi dalla clausola" errore se il percorso del file o nome ha uno spazio in esso.

Sto utilizzando il seguente codice:

oConn = new System.Data.Odbc.OdbcConnection (); oConn.ConnectionString = "Driver = {Microsoft dBase Driver (* .dbf)}; SourceType = DBF; SourceDB = NA; Esclusivo = No, fascicolazione = macchina; NULL = NO; CANCELLATO = NO; BackgroundFetch = NO;";

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

Il testo del comando non è hard-coded. Ho appena incluso in questo modo per la semplicità. L'applicazione è impostato per consentire a un utente di scegliere un file DBF e lo hanno visualizzarlo. Io non avere il controllo su cui gli utenti memorizzare i file DBF e preferirei non avere a ricordare di non inserire spazi nel nome del file / percorso.

Come faccio a sfuggire lo spazio nel nome del file / percorso?

È stato utile?

Soluzione

Probabile che sia un problema correlato con il "8.3 file di formato nome MS-DOS". È possibile rivedere i prossimi link:

Altri suggerimenti

Sono stato in esecuzione in questo problema pure. Questo era il mio # 1 hit in Google, quindi non ero molto fiducioso. Tuttavia, siamo stati in grado di ottenere il mio codice al lavoro cambiando la directory corrente alla directory problematica e quindi escludendo il percorso nel 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);

Si sta ancora limitato in quello che il nome del file può essere (senza spazi e <= 8 char credo), ma questo è qualcosa che posso lavorare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top