Kann ich alle in der Datenbank enthaltenen Tabellen irgendwie herausbekommen?
Gibt's da was in C# oder geht das irgendwie über ein SQL-Kommando?
Hab ich auch schon versucht. Da kommt immer "Datei ...Eigene Dateien\INFORMATION_SCHEMA.mdb nicht gefunden."
Kannst Dir auch mal OleDbConnection.GetOleDbSchemaTable(...) anschauen.
hallo,
probiere mal
use db_name
Exec SP_Tables
das gibt mir alle tabellen aus der DB
gerade im Query analyzer getestet
Das ist aber DB-abhängig. Die Information_Schemas sollten überall vorhanden sein. Und wie Du ja siehst, nutzt er eine Access DB.
Funktioniert auch nicht.
Vielleicht sollte ich dazusagen, dass es ne Access DB ist.
GetOleDbSchemaTable werd ich mir mal anschauen.
Scheint so als könnte Access das OleDbSchemaTable nicht:
The {e93a23e8-e2e5-4030-ab2a-1e2d36ebc676) OleDbSchemaGuid is not a supported schema by the 'Microsoft.Jet.OLEDB.4.0' provider.
eine Möglichkeit , mit NET Access-Tabellen zu listen, wäre folgende:
So ähnlich hatte ich das ja auch. Hab's jetzt mal so wie in dem Bsp probiert. Geht aber leider auch nicht. Selber Fehler.
Du musst ADOX benutzen , dann geht es relativ einfach
ADOX.Catalog catalog = new ADOX.Catalog();
ADODB.Connection conn = new ADODB.Connection();
conn.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\testdb.mdb";
conn.Open(null,null,null,0);
listBox1.Items.Clear();
catalog.ActiveConnection = conn;
for (int i = 0; i < catalog.Views.Count; i++)
{
listBox1.Items.Add(catalog.Views[i].Name);[/i]
listBox1.Items.Add(" Erstellt am: " + catalog.Views[i].DateCreated);[/i]
listBox1.Items.Add(" Änderung am: " + catalog.Views[i].DateModified);[/i]
listBox1.Items.Add(" SQL : " + (catalog.Views[i].Command as ADODB.Command).CommandText);[/i]
for (int j = 0; j < (catalog.Views[i].Command as ADODB.Command).Properties.Count; j++)[/i]
{
try
{
listBox1.Items.Add(" Property (" + (catalog.Views[i].Command as ADODB.Command).Properties[j].Name + ";) : " + [/i]
(catalog.Views[i].Command as ADODB.Command).Properties[j].Value.ToString());}[/i]
catch {}
}
}
}
Bis denn
Cypher
C# Padawan
Das muss er nicht benutzen.
OleDbConnection conn = new OleDbConnection(connectionString);
conn.Open();
DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
conn.Close();
Da halte ich diese Version doch um einiges einfacher.
Da muss ich dir recht geben
Ist echt einfacher 😉
Bis denn
Cypher
C# Padawan
Ja, funktioniert. Danke.
Mein Fehler lag bei dem Guid ( con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables...)