示例#1
0
 void IDBTraits.RemoveColumn(Func <DbCommand> commandCreator, ColumnReference column)
 {
     using (DbCommand command = commandCreator()) {
         command.CommandText = _SQLQueryManager.RemoveColumn(column);
         ExecuteNonQuery(command);
     }
 }
示例#2
0
 /// <summary>
 /// SQL-92, page 289
 /// </summary>
 private string _DropColumnDefinition(ColumnReference column)
 {
     return(string.Format(
                "drop column {0} {1}",
                nameEscaper(column.columnName), //column name
                ""                              //drop behavior
                ));
 }
示例#3
0
        ColumnOptions IDBTraits.GetColumnOptions(Func <DbCommand> commandCreator, ColumnReference column)
        {
            using (DbCommand command = commandCreator())
            {
                command.CommandText = "select * from user_tab_columns where table_name = :ptable and column_name = :pcolumn";
                AddParam(command, "ptable", DbType.String, column.tableName);
                AddParam(command, "pcolumn", DbType.String, column.columnName);
                using (DbDataReader reader = command.ExecuteReader())
                {
                    if (!reader.Read())
                    {
                        throw new ApplicationException("Column not found");
                    }

                    string dataType = (string)reader.GetValue("DATA_TYPE");

                    decimal?dataLength    = CastScalarResult <decimal>(reader.GetValue("DATA_LENGTH"));
                    decimal?dataPrecision = CastScalarResult <decimal>(reader.GetValue("DATA_PRECISION"));
                    decimal?dataScale     = CastScalarResult <decimal>(reader.GetValue("DATA_SCALE"));
                    string  sizeSpecifier = null;
                    if (dataPrecision.HasValue)
                    {
                        if (dataScale.HasValue)
                        {
                            sizeSpecifier = string.Format("{0}, {1}", dataPrecision, dataScale);
                        }
                        else
                        {
                            sizeSpecifier = dataPrecision.ToString();
                        }
                    }
                    else if (dataLength.HasValue)
                    {
                        sizeSpecifier = dataLength.ToString();
                    }
                    else
                    {
                        throw new ApplicationException("Field without a length");
                    }

                    string defaultValue = CastResult <string>(reader.GetValue(reader.GetOrdinal("DATA_DEFAULT")));

                    return(new ColumnOptions(
                               string.Format("{0}({1})", dataType, sizeSpecifier),
                               defaultValue != null ? defaultValue.Trim() : null,
                               !ParseBoolString((string)reader.GetValue(reader.GetOrdinal("NULLABLE")))
                               ));
                }
            }
        }
示例#4
0
        ColumnOptions IDBTraits.GetColumnOptions(Func <DbCommand> commandCreator, ColumnReference column)
        {
            using (DbCommand command = commandCreator()) {
                command.CommandText = "SELECT a.attnum, a.attname AS field, t.typname AS type, a.attlen AS length, a.atttypmod AS lengthvar, a.attnotnull AS notnull, d.adsrc AS defaultvalue FROM pg_attribute a JOIN pg_class c ON a.attrelid = c.oid JOIN pg_type t ON a.atttypid = t.oid LEFT JOIN pg_attrdef d ON c.oid = d.adrelid AND a.attnum = d.adnum WHERE a.attnum > 0 AND c.relname = :ptable and a.attname = :pcolumn";
                AddParam(command, "ptable", DbType.String, column.tableName);
                AddParam(command, "pcolumn", DbType.String, column.columnName);
                using (DbDataReader reader = ExecuteReader(command)) {
                    if (!reader.Read())
                    {
                        throw new ApplicationException("Column not found");
                    }

                    return(new ColumnOptions(
                               ParseTypeString(reader.GetString(reader.GetOrdinal("type"))),
                               reader.GetString(reader.GetOrdinal("defaultvalue")),
                               reader.GetBoolean(reader.GetOrdinal("notnull"))
                               ));
                }
            }
        }
示例#5
0
 public string RemoveColumn(ColumnReference column)
 {
     return(_AlterTableStatement(column.tableName, _DropColumnDefinition(column)));
 }
示例#6
0
 public ColumnDescription(ColumnReference column, ColumnOptions options)
 {
     this.column  = column;
     this.options = options;
 }
示例#7
0
 public void RemoveColumn(ColumnReference column)
 {
     this.traits.RemoveColumn(this.CreateTextCommand, column);
 }
示例#8
0
 public ColumnOptions GetColumnOptions(ColumnReference column)
 {
     return(this.traits.GetColumnOptions(this.CreateTextCommand, column));
 }