Esempio n. 1
0
        public List <SBD.DbObject> GetDbObjects(SBD.DbType dbType, string connectionString, bool includeProperties = true)
        {
            var tables = GetDbObjects(dbType, SBD.DbObjectType.Table, connectionString, includeProperties);
            var views  = GetDbObjects(dbType, SBD.DbObjectType.View, connectionString, includeProperties);

            return(tables.Union(views).ToList());
        }
Esempio n. 2
0
        public List <SBD.DbObject> GetDbObjects(SBD.DbType dbType, SBD.DbObjectType objectType, string connectionString, bool includeProperties = true)
        {
            List <SBD.DbObject> dbObjects = new List <SBD.DbObject>();

            using (var dbConnection = GetDbConnection(dbType, connectionString))
            {
                var tables       = dbConnection.GetSchema(objectType == SBD.DbObjectType.Table ? "Tables" : "Views");
                var catalogCol   = dbType == SBD.DbType.SqlServer ? tables.Columns["TABLE_CATALOG"] : null;
                var ownerCol     = dbType == SBD.DbType.SqlServer ? tables.Columns["TABLE_SCHEMA"] : tables.Columns["OWNER"];
                var tableNameCol = objectType == SBD.DbObjectType.View && dbType != SBD.DbType.SqlServer ? tables.Columns["VIEW_NAME"] : tables.Columns["TABLE_NAME"];

                foreach (DataRow tableRow in tables.Rows)
                {
                    var objectCatalog = dbType == SBD.DbType.SqlServer ? (string)tableRow[catalogCol] : string.Empty;
                    var objectOwner   = (string)tableRow[ownerCol];
                    var objectName    = (string)tableRow[tableNameCol];

                    var dbObject = new SBD.DbObject()
                    {
                        SchemaName = objectOwner,
                        Name       = objectName,
                        ObjectType = objectType,
                        //Properties = includeProperties ? GetDbObjectProperties(dbType, objectType, dbConnection, objectCatalog, objectOwner, objectName)
                        //                               : new List<SBD.DbObjectProperty>()
                    };

                    dbObjects.Add(dbObject);
                }
            }

            return(dbObjects);
        }
Esempio n. 3
0
        public List <SBD.DbObjectProperty> GetDbObjectProperties(SBD.DbType dbType, SBD.DbObjectType objectType, DbConnection dbConnection, string objectCatalog, string objectOwner, string objectName)
        {
            List <SBD.DbObjectProperty> dbObjectProperties = new List <SBD.DbObjectProperty>();

            var columns = dbType == SBD.DbType.SqlServer ?
                          dbConnection.GetSchema(objectType == SBD.DbObjectType.Table ? "Columns" : "ViewColumns", new string[] { objectCatalog, objectOwner, objectName }) :
                          dbConnection.GetSchema("Columns", new string[] { objectOwner, objectName });

            var columnNameCol = columns.Columns["COLUMN_NAME"];
            var columnTypeCol = dbType == SBD.DbType.SqlServer ? columns.Columns["DATA_TYPE"] : columns.Columns["DATATYPE"];
            var lengthCol     = dbType == SBD.DbType.SqlServer ? columns.Columns["CHARACTER_MAXIMUM_LENGTH"] : columns.Columns["LENGTH"];
            var nullableCol   = dbType == SBD.DbType.SqlServer ? columns.Columns["IS_NULLABLE"] : columns.Columns["NULLABLE"];

            foreach (DataRow columnRow in columns.Rows)
            {
                var columnName   = (string)columnRow[columnNameCol];
                var columnType   = columnTypeCol == null ? null : (string)columnRow[columnTypeCol];
                var columnLength = lengthCol == null || columnRow.IsNull(lengthCol.Ordinal) ? 0 : int.Parse(columnRow[lengthCol].ToString());
                var isNullable   = nullableCol == null || columnRow.IsNull(nullableCol.Ordinal) ? true : ((string)columnRow[nullableCol]).ToLower()[0] == 'y';

                var dbObjectProperty = new SBD.DbObjectProperty()
                {
                    SchemaName = objectOwner,
                    ObjectName = objectName,
                    Name       = columnName
                };

                dbObjectProperties.Add(dbObjectProperty);
            }
            return(dbObjectProperties);
        }
Esempio n. 4
0
        private DbProviderFactory GetDbProviderFactory(SBD.DbType dbType)
        {
            DataTable         availableFactories = DbProviderFactories.GetFactoryClasses();
            DataColumn        providerNameCol    = availableFactories.Columns["InvariantName"];
            DbProviderFactory selectedFactory    = null;

            foreach (DataRow factoryRow in availableFactories.Rows)
            {
                var providerName = (string)factoryRow[providerNameCol.Ordinal];
                switch (dbType)
                {
                case SBD.DbType.SqlServer:
                    if (providerName == "System.Data.SqlClient")
                    {
                        selectedFactory = DbProviderFactories.GetFactory(factoryRow);
                    }
                    break;

                case SBD.DbType.Oracle:
                    if (providerName == "Oracle.DataAccess.Client")
                    {
                        selectedFactory = DbProviderFactories.GetFactory(factoryRow);
                    }
                    break;
                }
                if (selectedFactory != null)
                {
                    break;
                }
            }
            return(selectedFactory);
        }
Esempio n. 5
0
        public List <SBD.DbObjectProperty> GetDbObjectProperties(SBD.DbType dbType, string connectionString)
        {
            using (var dbConnection = GetDbConnection(dbType, connectionString))
            {
                var tableCols = GetDbObjectProperties(dbType, SBD.DbObjectType.Table, dbConnection);
                var viewCols  = GetDbObjectProperties(dbType, SBD.DbObjectType.View, dbConnection);

                return(tableCols.Union(viewCols).ToList());
            }
        }
Esempio n. 6
0
        private DbConnection GetDbConnection(SBD.DbType dbType, string connectionString)
        {
            var factory      = GetDbProviderFactory(dbType);
            var dbConnection = factory.CreateConnection();

            if (!string.IsNullOrEmpty(connectionString))
            {
                dbConnection.ConnectionString = connectionString;
                dbConnection.Open();
            }
            return(dbConnection);
        }
Esempio n. 7
0
 public bool TestConnection(SBD.DbType dbType, string connectionString, out string message)
 {
     message = string.Empty;
     try
     {
         using (var connection = GetDbConnection(dbType, connectionString))
         {
             connection.Close();
         }
     }
     catch (Exception ex)
     {
         message = ex.Message;
     }
     return(string.IsNullOrEmpty(message));
 }