public override void LoadDatabases(MetadataList databases, MetadataLoadingOptions loadingOptions) { if (databases.Parent.Server == null) { if (!Connected) { Connect(); } try { DataTable schemaTable = _connection.GetSchema("Databases"); using (MetadataNamespacesFetcherFromDatatable mdf = new MetadataNamespacesFetcherFromDatatable(databases, MetadataType.Database, loadingOptions)) { mdf.Datatable = schemaTable; mdf.NameFieldName = "database_name"; mdf.LoadMetadata(); } } catch (Exception exception) { throw new QueryBuilderException(exception.Message, exception); } } }
public override void LoadDatabases(MetadataList databases, MetadataLoadingOptions loadingOptions) { if (!Connected) { Connect(); } // load from OLEDB catalogs try { DataTable schemaTable = _connection.GetSchema("Tables"); string databaseFieldName = "TABLE_CATALOG"; if (schemaTable.Columns[databaseFieldName] == null) { databaseFieldName = "TABLE_CAT"; } using (MetadataNamespacesFetcherFromDatatable mdf = new MetadataNamespacesFetcherFromDatatable(databases, MetadataType.Database, loadingOptions)) { mdf.Datatable = schemaTable; mdf.NameFieldName = databaseFieldName; mdf.LoadMetadata(); } } catch { // loading from OLEDB catalog failed } // load default database string currentDatabase = Connection.Database; if (!string.IsNullOrEmpty(currentDatabase)) { MetadataNamespace database = databases.FindItem <MetadataNamespace>(currentDatabase, MetadataType.Database); if (database == null) { database = new MetadataNamespace(databases, MetadataType.Database); database.Name = currentDatabase; databases.Add(database); } database.Default = true; } }
public override void LoadSchemas(MetadataList schemas, MetadataLoadingOptions loadingOptions) { MetadataNamespace database = schemas.Parent.Database; if (schemas.Parent.Server == null && database != null) { if (!Connected) { Connect(); } try { string[] restrictions = new string[1]; restrictions[0] = database.Name; using (DataTable schemaTable = _connection.GetSchema("Tables", restrictions)) { using (MetadataNamespacesFetcherFromDatatable mdf = new MetadataNamespacesFetcherFromDatatable(schemas, MetadataType.Schema, loadingOptions)) { mdf.Datatable = schemaTable; mdf.NameFieldName = "TABLE_SCHEMA"; mdf.LoadMetadata(); } } using (DataTable schemaTable = _connection.GetSchema("Views", restrictions)) { using (MetadataNamespacesFetcherFromDatatable mdf = new MetadataNamespacesFetcherFromDatatable(schemas, MetadataType.Schema, loadingOptions)) { mdf.Datatable = schemaTable; mdf.NameFieldName = "TABLE_SCHEMA"; mdf.LoadMetadata(); } } } catch (Exception exception) { throw new QueryBuilderException(exception.Message, exception); } } }
public override void LoadDatabases(MetadataList databases, MetadataLoadingOptions loadingOptions) { if (!Connected) { Connect(); } try { MetadataNamespacesFetcherFromDatatable mnf = new MetadataNamespacesFetcherFromDatatable(databases, MetadataType.Database, loadingOptions); mnf.NameFieldName = "TABLE_CAT"; using (DataTable schemaTable = _connection.GetSchema("Tables")) { // pre-ODBC v3 if (schemaTable.Columns.IndexOf("TABLE_CAT") == -1) { // ODBC v2 if (schemaTable.Columns.IndexOf("TABLE_QUALIFIER") != -1) { mnf.NameFieldName = "TABLE_QUALIFIER"; } // ODBC v1? else if (schemaTable.Columns.IndexOf("QUALIFIERNAME") != -1) { mnf.NameFieldName = "QUALIFIERNAME"; } } mnf.Datatable = schemaTable; mnf.LoadMetadata(); } } catch (Exception exception) { throw new QueryBuilderException(exception.Message, exception); } }