private static string FormatColumn(TableInfo table, ColumnInfo column)
 {
     OleDbType dbType;
     if (table.IsDbTypeOverridden(column.Name, out dbType))
     {
         switch (dbType)
         {
             case OleDbType.Binary:
                 return string.Format("CAST({0} as Blob) as {0}", column.Name);
             default:
                 throw new InvalidOperationException(string.Format("Unsupported dbType {0} for column {1}", dbType, column.Name));
         }
     }
     return column.Name;
 }
        private static string FormatColumn(TableInfo table, ColumnInfo column)
        {
            OleDbType dbType;

            if (table.IsDbTypeOverridden(column.Name, out dbType))
            {
                switch (dbType)
                {
                case OleDbType.Binary:
                    return(string.Format("CAST({0} as Blob) as {0}", column.Name));

                default:
                    throw new InvalidOperationException(string.Format("Unsupported dbType {0} for column {1}", dbType, column.Name));
                }
            }
            return(column.Name);
        }
Example #3
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 #4
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));
            }
        }