internal ProcedureParameter( DBConnection cn, string name, string dataTypeFromGetSchema, int size, ParameterDirection direction ) { var table = cn.GetSchema( "DataTypes" ); var rows = new List<DataRow>(); foreach( DataRow r in table.Rows ) { if( (string)r[ "TypeName" ] == dataTypeFromGetSchema ) rows.Add( r ); } if( rows.Count != 1 ) throw new ApplicationException( "There must be exactly one data type row matching the specified data type name." ); var row = rows[ 0 ]; var dataType = Type.GetType( (string)row[ "DataType" ], true ); var dbTypeString = cn.DatabaseInfo.GetDbTypeString( row[ "ProviderDbType" ] ); var allowsNull = (bool)row[ "IsNullable" ]; valueContainer = new ValueContainer( name, dataType, dbTypeString, size, allowsNull, cn.DatabaseInfo ); this.direction = direction; }
private Column( DataRow schemaTableRow, bool includeKeyInfo, DatabaseInfo databaseInfo ) { ordinal = (int)schemaTableRow[ "ColumnOrdinal" ]; // MySQL incorrectly uses one-based ordinals; see http://bugs.mysql.com/bug.php?id=61477. if( databaseInfo is MySqlInfo ) ordinal -= 1; valueContainer = new ValueContainer( (string)schemaTableRow[ "ColumnName" ], (Type)schemaTableRow[ "DataType" ], databaseInfo.GetDbTypeString( schemaTableRow[ "ProviderType" ] ), (int)schemaTableRow[ "ColumnSize" ], (bool)schemaTableRow[ "AllowDBNull" ], databaseInfo ); isIdentity = ( databaseInfo is SqlServerInfo && (bool)schemaTableRow[ "IsIdentity" ] ) || ( databaseInfo is MySqlInfo && (bool)schemaTableRow[ "IsAutoIncrement" ] ); isRowVersion = databaseInfo is SqlServerInfo && (bool)schemaTableRow[ "IsRowVersion" ]; if( includeKeyInfo ) isKey = (bool)schemaTableRow[ "IsKey" ]; }
internal ProcedureParameter(DBConnection cn, string name, string dataTypeFromGetSchema, int size, ParameterDirection direction) { var table = cn.GetSchema("DataTypes"); var rows = new List <DataRow>(); foreach (DataRow r in table.Rows) { if ((string)r["TypeName"] == dataTypeFromGetSchema) { rows.Add(r); } } if (rows.Count != 1) { throw new ApplicationException("There must be exactly one data type row matching the specified data type name."); } var row = rows[0]; var dataType = Type.GetType((string)row["DataType"], true); var dbTypeString = cn.DatabaseInfo.GetDbTypeString(row["ProviderDbType"]); var allowsNull = (bool)row["IsNullable"]; valueContainer = new ValueContainer(name, dataType, dbTypeString, size, allowsNull, cn.DatabaseInfo); this.direction = direction; }