Example #1
0
        private static void AddColumn(TableInfo tableInfo, DataRow row)
        {
            const string numericPrecisionColumn = "NUMERIC_PRECISION";
            const string numericScaleColumn = "NUMERIC_SCALE";
            const string characterMaximumLengthColumn = "CHARACTER_MAXIMUM_LENGTH";

            var columnName = row["COLUMN_NAME"].ToString();
            if (tableInfo.IsIgnoredColumn(columnName))
                return;

            var dbType = (OleDbType) row["DATA_TYPE"];
            OleDbType overiddenDbType;
            if (tableInfo.IsDbTypeOverridden(columnName, out overiddenDbType))
                dbType = overiddenDbType;

            var ordinalPosition = (Int64) row["ORDINAL_POSITION"];
            int? numericPrecision = null;
            if (row[numericPrecisionColumn] != DBNull.Value)
            {
                numericPrecision = int.Parse(row[numericPrecisionColumn].ToString());
            }
            int? numericScale = null;
            if (row[numericScaleColumn] != DBNull.Value)
            {
                numericScale = int.Parse(row[numericScaleColumn].ToString());
            }
            long? maxLength = null;
            if (row[characterMaximumLengthColumn] != DBNull.Value)
            {
                maxLength = long.Parse(row[characterMaximumLengthColumn].ToString());
            }

            long overriddenMaxLength;
            if (tableInfo.IsMaxLengthOverridden(columnName, out overriddenMaxLength))
            {
                maxLength = overriddenMaxLength;
            }

            switch (dbType)
            {
                case OleDbType.Char:
                case OleDbType.Integer:
                case OleDbType.Numeric:
                case OleDbType.Boolean:
                case OleDbType.DBDate:
                case OleDbType.Binary:
                    var columnInfo = new ColumnInfo(columnName, ordinalPosition, dbType, maxLength, numericPrecision,
                                                    numericScale,
                                                    tableInfo.PrimaryKey != null && columnName.Equals(tableInfo.PrimaryKey));
                    tableInfo.AddColumn(columnInfo);
                    break;
                default:
                    throw new InvalidOperationException(string.Format("Unknown database type: {0}", dbType));
            }
        }
Example #2
0
        private static void AddColumn(TableInfo tableInfo, DataRow row)
        {
            const string numericPrecisionColumn       = "NUMERIC_PRECISION";
            const string numericScaleColumn           = "NUMERIC_SCALE";
            const string characterMaximumLengthColumn = "CHARACTER_MAXIMUM_LENGTH";

            var columnName = row["COLUMN_NAME"].ToString();

            if (tableInfo.IsIgnoredColumn(columnName))
            {
                return;
            }

            var       dbType = (OleDbType)row["DATA_TYPE"];
            OleDbType overiddenDbType;

            if (tableInfo.IsDbTypeOverridden(columnName, out overiddenDbType))
            {
                dbType = overiddenDbType;
            }

            var ordinalPosition  = (Int64)row["ORDINAL_POSITION"];
            int?numericPrecision = null;

            if (row[numericPrecisionColumn] != DBNull.Value)
            {
                numericPrecision = int.Parse(row[numericPrecisionColumn].ToString());
            }
            int?numericScale = null;

            if (row[numericScaleColumn] != DBNull.Value)
            {
                numericScale = int.Parse(row[numericScaleColumn].ToString());
            }
            long?maxLength = null;

            if (row[characterMaximumLengthColumn] != DBNull.Value)
            {
                maxLength = long.Parse(row[characterMaximumLengthColumn].ToString());
            }

            long overriddenMaxLength;

            if (tableInfo.IsMaxLengthOverridden(columnName, out overriddenMaxLength))
            {
                maxLength = overriddenMaxLength;
            }

            switch (dbType)
            {
            case OleDbType.Char:
            case OleDbType.Integer:
            case OleDbType.Numeric:
            case OleDbType.Boolean:
            case OleDbType.DBDate:
            case OleDbType.Binary:
                var columnInfo = new ColumnInfo(columnName, ordinalPosition, dbType, maxLength, numericPrecision,
                                                numericScale,
                                                tableInfo.PrimaryKey != null && columnName.Equals(tableInfo.PrimaryKey));
                tableInfo.AddColumn(columnInfo);
                break;

            default:
                throw new InvalidOperationException(string.Format("Unknown database type: {0}", dbType));
            }
        }