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;
            }
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
        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);
            }
        }