Kann mir jemand sagen, wie man eine Liste der Tabellen in einer Visual FoxPro-Datenbank aus C# erhalten?Get Liste der Tabellen aus der Datenbank
Ich versuchte mit der GetSchema
, aber die Informationen, die zurückkommt scheint nur zählt (und nicht genau zählt, dass). Hier
ist, was ich habe ...
string connSrc = @"Provider=VFPOLEDB.1;Data Source=myvfpdb.dbc";
using (var cmdSrc = new OleDbCommand())
using (var dbconnSrc = new OleDbConnection(connSrc))
{
dbconnSrc.Open();
DataTable schema = dbconnSrc.GetSchema();
}
Ich dachte, es könnte eine Möglichkeit sein, die ich die DBC-Datei direkt öffnen konnte und eine SELECT dagegen laufen, aber das Problem ist die Datenbank in dem Pfad befindet zu der Verbindungszeichenfolge. Ich konnte keinen OleDb-Befehl finden, der die Schemainformationen extrahieren würde.
EDIT:
fand ich einen Weg, der funktioniert, aber es scheint ein wenig klobig. Kennt jemand einen besseren Weg?
string connSrc = @"Provider=VFPOLEDB.1;Data Source=myvfpdb.dbc";
using (var conn = new OleDbConnection(connSrc))
dbc = conn.DataSource;
string path = Path.GetDirectoryName(dbc);
string database = Path.GetFileName(dbc);
using (var conn = new OleDbConnection(@"Provider=VFPOLEDB.1;Data Source=" + path))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM " + database;
DbDataReader reader = cmd.ExecuteReader();
}
}
EDIT:
Mit Tamar Vorschlag geändert, um die Abfrage-Anweisung dazu ...
cmd.CommandText = $"SELECT ObjectName FROM {database} WHERE ObjectType = \"Table\"";
Sie können natürlich auch eine WHERE-Klausel der Abfrage hinzufügen: WHERE Objecttype = "Table" –
@ TamarE.Granor Guter Fang! Ich werde das hinzufügen. –
Und? Hat das dein Problem gelöst? Wenn ja, poste es einfach als Antwort. –