C# Fehler beim Öffnen einer FoxPro Datenbank

mathias146

Cadet 3rd Year
Registriert
Juni 2010
Beiträge
59
Hi,

ich habe ein Programm zum Öffnen einer FoxPro (*.dbf) Datenbank geschrieben.
Die Daten der FoxPro Datenbank werden dann in ein DataTable geschrieben.
Das Programm hat bis zum Neuaufsetzen des Notebooks super funktioniert.
Da ich jetzt das Notebook neu aufgesetzt habe, funktioniert es nicht mehr.

Code:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.dbf|*.dbf";
if (ofd.ShowDialog() != true)
   return;
//string file = ofd.FileName;
//FileInfo fi = new FileInfo(file);

OleDbConnection oConn = new OleDbConnection("Provider=VFPOLEDB.1;" +
   "Data Source=" + ofd.FileName + ";");
oConn.Open();

OleDbCommand oCmd = oConn.CreateCommand();
oCmd.CommandText = @"SELECT * FROM " + ofd.FileName;
DataTable dt = new DataTable();
dt.Load(oCmd.ExecuteReader());
oConn.Close();
...

Bei der Zeile 15 bekomme ich jetzt einen Fehler:
System.Data.OleDb.OleDbException | "Command contains unrecognized phrase/keyword."

Den "Microsoft OLE DB Provider for Visual FoxPro 9.0" Installer habe ich schon installiert. An dem liegt es also nicht.

Hatte schon einmal jemand so ein Problem??

Vielen Dank im Voraus
Mathias 146
 
Zuletzt bearbeitet:
Hi,

sieht so aus als solltest du hier

>> oCmd.CommandText = @"SELECT * FROM " + ofd.FileName;

wohl besser einen Tabellennamen angeben ...:-)

also ein

oCmd.CommandText = @"SELECT * FROM " + "tablename";
 
Der Tabellenname ist der gleiche Name wie die Datei.
Soviel ich weiß, wird bei FoxPro jede Tabelle einzeln abgespeichert.

Edit:
Hab den Fehler behoben.
Es lag an den ' - Zeichen.
Code:
oCmd.CommandText = @"SELECT * FROM '" + ofd.FileName + "'" ;
 
Zuletzt bearbeitet: (Fehler behoben)
Leerzeichen im Pfad/Dateinamen ? Probier mal:
Code:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.dbf|*.dbf";
if (ofd.ShowDialog() != true)
   return;
string file = '\"'+ofd.FileName + '\"';

OleDbConnection oConn = new OleDbConnection("Provider=VFPOLEDB.1;" +
   "Data Source=" + file + ";");
oConn.Open();

OleDbCommand oCmd = oConn.CreateCommand();
oCmd.CommandText = @"SELECT * FROM " + file;
DataTable dt = new DataTable();
dt.Load(oCmd.ExecuteReader());
oConn.Close();
...
 
Zurück
Oben