当前位置: 首页>>代码示例>>C#>>正文


C# IDataRecord.GetFieldType方法代码示例

本文整理汇总了C#中IDataRecord.GetFieldType方法的典型用法代码示例。如果您正苦于以下问题:C# IDataRecord.GetFieldType方法的具体用法?C# IDataRecord.GetFieldType怎么用?C# IDataRecord.GetFieldType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在IDataRecord的用法示例。


在下文中一共展示了IDataRecord.GetFieldType方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GetValueExpression

        internal static Expression GetValueExpression(this ParameterExpression sourceInstance, Type fieldType, IDataRecord record, int fieldIndex)
        {
            //类型

            var tempType = record.GetFieldType(fieldIndex);


            var methodExpression = GetMethodInfo(fieldType);

            UnaryExpression dbNullCheckExpression = Expression.IsFalse(Expression.Call(sourceInstance, Method_IsDBNull, Expression.Constant(fieldIndex)));

            ParameterExpression value = Expression.Variable(fieldType, "Value");

            Expression valueExpression = Expression.Call(sourceInstance, methodExpression, Expression.Constant(fieldIndex));

            if (!tempType.Equals(fieldType))
            {
                valueExpression = Expression.Convert(valueExpression, fieldType);
            }

            return Expression.Block(
                new ParameterExpression[] { value },
                Expression.IfThen(
                    dbNullCheckExpression,
                     Expression.Assign(value, valueExpression)
                    ),
                   Expression.Convert(value, fieldType)
                );
        }
开发者ID:daixinkai,项目名称:Dai.CommonLib,代码行数:29,代码来源:DataReaderDefine.cs

示例2: EventFactory

        public EventFactory(IDataRecord record)
        {
            Contract.Requires(null != record, "The record must be valid.");

            _eventIdOrdinal = record.GetOrdinal("EventClass");

            var type = record.GetFieldType(_eventIdOrdinal);
            _isEventIdAnInt = typeof(Int32) == type;
            Debug.Assert(typeof(String) == type || typeof(Int32) == type, "The type should be a string or int.", "Type:" + type.FullName);
        }
开发者ID:jshield,项目名称:sqlperms,代码行数:10,代码来源:EventFactory.cs

示例3: MapFromReader

        private static Field MapFromReader(IDataRecord reader)
        {
            var field = new Field();
            field.Id = (int)reader.GetValue<long>("MZ_COD");
            field.Name = reader.GetValue<string>("MZ_NOMBRE");
            field.Description = reader.GetValue<string>("MZ_DESC");
            field.FieldType = reader.GetFieldType("MZ_TIPO");

            return field;
        }
开发者ID:modulexcite,项目名称:Cinch-Validation-Lock,代码行数:10,代码来源:DefaultFieldsRepository.cs

示例4: CreateResult

 private static QueryResult CreateResult(IDataRecord reader)
 {
     var result = new QueryResult();
     for (var ii = 0; ii < reader.FieldCount; ii++)
     {
         var name = reader.GetName(ii);
         var type = reader.GetFieldType(ii);
         result.AddColumn(name, type);
     }
     return result;
 }
开发者ID:pedershk,项目名称:dotnetprograms,代码行数:11,代码来源:SqlExecutor.cs

示例5: DataRecordConverterSpec

		public DataRecordConverterSpec(IDataRecord dataRecord, Type recordType)
		{
			var fields = new List<DataRecordFieldInfo>(dataRecord.FieldCount);
			for (int index = 0; index < dataRecord.FieldCount; ++index)
			{
				fields.Add(new DataRecordFieldInfo(index, dataRecord.GetName(index), dataRecord.GetFieldType(index)));
			}

			_recordType = recordType;
			_fields = fields.AsReadOnly();
		}
开发者ID:matthewc-mps-aust,项目名称:quokka,代码行数:11,代码来源:DataRecordConverterSpec.cs

示例6: GetValue

 /// <summary>
 /// Gets the value.
 /// </summary>
 /// <param name="index">The index.</param>
 /// <param name="dataRecord">The data record.</param>
 /// <returns></returns>
 private object GetValue(int index, IDataRecord dataRecord)
 {
     if (dataRecord.IsDBNull(index))
     {
         return DBNull.Value;
     }
     if (dataRecord.GetFieldType(index) == typeof(Guid))
     {
         return dataRecord.GetGuid(index);
     }
     return new Guid(Convert.ToString(dataRecord[index]));
 }
开发者ID:techvenky,项目名称:mybatisnet,代码行数:18,代码来源:GuidTypeHandler.cs

示例7: CreateDataColumns

 private static void CreateDataColumns(IDataRecord reader, DataTable dt)
 {
     for (var i = 0; i < reader.FieldCount; i++)
     {
         var add = dt.Columns.Add();
         var columnName = reader.GetName(i);
         if (!String.IsNullOrEmpty(columnName)) add.ColumnName = columnName;
         add.DataType = reader.GetFieldType(i);
     }
 }
开发者ID:kevinbosman,项目名称:habanero,代码行数:10,代码来源:DatabaseConnection.cs

示例8: CreateResultTable

        private static DataTable CreateResultTable(IDataRecord reader)
        {
            DataTable dataTable = new DataTable();
            for (int i = 0; i < reader.FieldCount; i++)
            {
                DataColumn dataColumn = new DataColumn(reader.GetName(i), reader.GetFieldType(i));
                dataTable.Columns.Add(dataColumn);
            }

            return dataTable;
        }
开发者ID:HadasDeveloper,项目名称:Ls_RSI_01,代码行数:11,代码来源:DataHelper.cs

示例9: CreateBuilder

        private static Build CreateBuilder(Type destinationType, IDataRecord dataRecord)
        {
            var method = new DynamicMethod("DynamicCreate", destinationType, new[] { typeof(IDataRecord) }, destinationType, true);
            var generator = method.GetILGenerator();

            var result = generator.DeclareLocal(destinationType);
            generator.Emit(OpCodes.Newobj, destinationType.GetConstructor(Type.EmptyTypes));
            generator.Emit(OpCodes.Stloc, result);

            for (var i = 0; i < dataRecord.FieldCount; i++)
            {
                var propertyInfo = destinationType.GetProperty(dataRecord.GetName(i));
                var endIfLabel = generator.DefineLabel();

                if (propertyInfo != null && propertyInfo.GetSetMethod(true) != null)
                {
                    generator.Emit(OpCodes.Ldarg_0);
                    generator.Emit(OpCodes.Ldc_I4, i);
                    generator.Emit(OpCodes.Callvirt, isDBNullMethod);
                    generator.Emit(OpCodes.Brtrue, endIfLabel);

                    generator.Emit(OpCodes.Ldloc, result);
                    generator.Emit(OpCodes.Ldarg_0);
                    generator.Emit(OpCodes.Ldc_I4, i);
                    generator.Emit(OpCodes.Callvirt, getValueMethod);

                    if (propertyInfo.PropertyType.IsGenericType
                        && propertyInfo.PropertyType.Name.Equals(typeof(Nullable<>).Name))
                    {
                        generator.Emit(OpCodes.Unbox_Any, propertyInfo.PropertyType);
                    }
                    else
                    {
                        generator.Emit(OpCodes.Unbox_Any, dataRecord.GetFieldType(i));
                    }
                    generator.Emit(OpCodes.Callvirt, propertyInfo.GetSetMethod(true));

                    generator.MarkLabel(endIfLabel);
                }
            }

            generator.Emit(OpCodes.Ldloc, result);
            generator.Emit(OpCodes.Ret);

            return (Build)method.CreateDelegate(typeof(Build));
        }
开发者ID:joshuaflanagan,项目名称:AutoMapper,代码行数:46,代码来源:DataReaderMapper.cs

示例10: CreateBuilder

		private static Build CreateBuilder(Type destinationType, IDataRecord dataRecord)
		{
			Build builder;
			BuilderKey builderKey = new BuilderKey(destinationType, dataRecord);
			if (_builderCache.TryGetValue(builderKey, out builder))
			{
				return builder;
			}

			var method = new DynamicMethod("DynamicCreate", destinationType, new[] { typeof(IDataRecord) }, destinationType, true);
			var generator = method.GetILGenerator();

			var result = generator.DeclareLocal(destinationType);
			generator.Emit(OpCodes.Newobj, destinationType.GetConstructor(Type.EmptyTypes));
			generator.Emit(OpCodes.Stloc, result);

			for (var i = 0; i < dataRecord.FieldCount; i++)
			{
				var propertyInfo = destinationType.GetProperty(dataRecord.GetName(i), BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance);
				var endIfLabel = generator.DefineLabel();

				if (propertyInfo != null && propertyInfo.GetSetMethod(true) != null)
				{
					generator.Emit(OpCodes.Ldarg_0);
					generator.Emit(OpCodes.Ldc_I4, i);
					generator.Emit(OpCodes.Callvirt, isDBNullMethod);
					generator.Emit(OpCodes.Brtrue, endIfLabel);

					generator.Emit(OpCodes.Ldloc, result);
					generator.Emit(OpCodes.Ldarg_0);
					generator.Emit(OpCodes.Ldc_I4, i);
					generator.Emit(OpCodes.Callvirt, getValueMethod);

					if (propertyInfo.PropertyType.IsGenericType
						&& propertyInfo.PropertyType.GetGenericTypeDefinition().Equals(typeof(Nullable<>))
						)
					{
						var nullableType = propertyInfo.PropertyType.GetGenericTypeDefinition().GetGenericArguments()[0];
						if (!nullableType.IsEnum)
							generator.Emit(OpCodes.Unbox_Any, propertyInfo.PropertyType);
						else
						{
							generator.Emit(OpCodes.Unbox_Any, nullableType);
							generator.Emit(OpCodes.Newobj, propertyInfo.PropertyType);
						}
					}
					else
					{
						generator.Emit(OpCodes.Unbox_Any, dataRecord.GetFieldType(i));
					}
					generator.Emit(OpCodes.Callvirt, propertyInfo.GetSetMethod(true));

					generator.MarkLabel(endIfLabel);
				}
			}

			generator.Emit(OpCodes.Ldloc, result);
			generator.Emit(OpCodes.Ret);

			builder = (Build)method.CreateDelegate(typeof(Build));
			_builderCache[builderKey] = builder;
			return builder;
		}
开发者ID:sclcwwl,项目名称:Gimela,代码行数:63,代码来源:DataReaderMapper.cs

示例11: ReadFrom

 public static void ReadFrom(this ICdlValueWriter writer, IDataRecord record, int index)
 {
     if (record.IsDBNull(index))
     {
         writer.SetNull();
         return;
     }
     Type type = record.GetFieldType(index);
     try
     {
         switch (Type.GetTypeCode(type))
         {
             case TypeCode.Boolean:
                 writer.SetBoolean(record.GetBoolean(index));
                 break;
             case TypeCode.Byte:
                 writer.SetByte(record.GetByte(index));
                 break;
             case TypeCode.Int16:
                 writer.SetInt16(record.GetInt16(index));
                 break;
             case TypeCode.Int32:
                 writer.SetInt32(record.GetInt32(index));
                 break;
             case TypeCode.Int64:
                 writer.SetInt64(record.GetInt64(index));
                 break;
             case TypeCode.SByte:
                 unchecked
                 {
                     writer.SetSByte((sbyte) record.GetByte(index));
                 }
                 break;
             case TypeCode.UInt16:
                 unchecked
                 {
                     writer.SetUInt16((ushort) record.GetInt16(index));
                 }
                 break;
             case TypeCode.UInt32:
                 unchecked
                 {
                     writer.SetUInt32((uint) record.GetInt32(index));
                 }
                 break;
             case TypeCode.UInt64:
                 unchecked
                 {
                     writer.SetUInt64((ulong) record.GetInt64(index));
                 }
                 break;
             case TypeCode.DateTime:
                 writer.SetDateTime(record.GetDateTime(index));
                 break;
             case TypeCode.Decimal:
                 writer.SetDecimal(record.GetDecimal(index));
                 break;
             case TypeCode.Single:
                 writer.SetFloat(record.GetFloat(index));
                 break;
             case TypeCode.Double:
                 writer.SetDouble(record.GetDouble(index));
                 break;
             case TypeCode.String:
                 writer.SetString(record.GetString(index));
                 break;
             default:
                 if (type == typeof (Guid))
                 {
                     writer.SetGuid(record.GetGuid(index));
                 }
                 else if (type == typeof (byte[]))
                 {
                     writer.SetByteArray((byte[]) record.GetValue(index));
                 }
                 else
                 {
                     writer.SetString(record.GetValue(index).ToString());
                 }
                 break;
         }
     }
     catch (Exception err)
     {
         try
         {
             object val = record[index];
             // try to read from boxed value (not very effective)
             writer.ReadFrom(val);
         }
         catch
         {
             try
             {
                 writer.SetString(record.GetString(index));
             }
             catch
             {
                 // add information to exception
                 try
//.........这里部分代码省略.........
开发者ID:dbshell,项目名称:dbshell,代码行数:101,代码来源:CdlValueExtension.cs

示例12: GenerateObjectBuilder

        public static Func<IDataRecord, Dictionary<MappingEnum, object>, object> GenerateObjectBuilder( Type type, IDataRecord dataRecord, Dictionary<MappingEnum, object> mappings )
        {
            var propertyMaps = mappings.ContainsKey( MappingEnum.PropertyMap ) ? mappings[ MappingEnum.PropertyMap ] as Dictionary<PropertyInfo, PropertyMap> : new Dictionary<PropertyInfo, PropertyMap>();
            var filteredPropertyMaps = propertyMaps.Where( x => x.Key.DeclaringType.IsAssignableFrom( type ) ).ToList();

            var method = new DynamicMethod( "", typeof( object ), new[]
            {
                typeof( IDataRecord ),
                typeof( Dictionary<MappingEnum, object> )
            }, true );
            var emitter = method.GetILGenerator();

            var localPropertyMapsBuilders = new Dictionary<PropertyInfo, LocalBuilder>();
            if ( filteredPropertyMaps.Count > 0 )
            {
                var propertyMapsLocal = emitter.DeclareLocal( typeof( List<PropertyMap> ) );

                emitter.Emit( OpCodes.Ldarg_1 );
                emitter.Emit( OpCodes.Ldc_I4, (int)MappingEnum.PropertyMap );
                emitter.Emit( OpCodes.Callvirt, typeof( Dictionary<MappingEnum, object> ).GetMethod( "GetValueOrDefault", BindingFlags.Instance | BindingFlags.NonPublic ) );
                emitter.Emit( OpCodes.Castclass, typeof( Dictionary<PropertyInfo, PropertyMap> ) );
                emitter.Emit( OpCodes.Call, typeof( Dictionary<PropertyInfo, PropertyMap> ).GetProperty( "Values" ).GetGetMethod() );
                emitter.Emit( OpCodes.Call, typeof( Enumerable ).GetMethod( "ToList" ).MakeGenericMethod( typeof( PropertyMap ) ) );
                emitter.Emit( OpCodes.Stloc, propertyMapsLocal );

                foreach ( var propertyMap in filteredPropertyMaps.Where( x => x.Value.PropertyMapType == PropertyMapType.Func ) )
                {
                    var localBuilder = emitter.DeclareLocal( propertyMap.Value.SetAction.GetType() );
                    var index = propertyMaps.Keys.ToList().IndexOf( propertyMap.Key );

                    emitter.Emit( OpCodes.Ldloc, propertyMapsLocal );
                    emitter.Emit( OpCodes.Ldc_I4, index );
                    emitter.Emit( OpCodes.Call, typeof( List<PropertyMap> ).GetProperty( "Item" ).GetGetMethod() );
                    emitter.Emit( OpCodes.Call, typeof( PropertyMap ).GetProperty( "SetAction" ).GetGetMethod() );
                    emitter.Emit( OpCodes.Castclass, propertyMap.Value.SetAction.GetType() );
                    emitter.Emit( OpCodes.Stloc, localBuilder );
                    localPropertyMapsBuilders.Add( propertyMap.Key, localBuilder );
                }
            }

            var objectVariable = emitter.DeclareLocal( type );

            emitter.Emit( OpCodes.Newobj, type.GetConstructors()[ 0 ] );
            emitter.Emit( OpCodes.Stloc, objectVariable );

            for ( var i = 0; i < dataRecord.FieldCount; i++ )
            {
                if ( type == typeof( ExpandoObject ) )
                {
                    var valueLocalBuilder = emitter.DeclareLocal( dataRecord.GetFieldType( i ) );
                    DataReaderEmitter.GetPropertyValue( emitter, dataRecord.GetFieldType( i ), i, false );
                    emitter.Emit( OpCodes.Stloc, valueLocalBuilder );
                    ExpandoObjectInteractor.SetExpandoProperty( emitter, objectVariable, dataRecord.GetName( i ), valueLocalBuilder );
                }
                else
                {
                    PropertyInfo propertyInfo;
                    if ( filteredPropertyMaps.Any( x => x.Value.PropertyMapType == PropertyMapType.ColumnId && x.Value.ColumnId == i ) )
                        propertyInfo = filteredPropertyMaps.First( x => x.Value.ColumnId == i ).Key;
                    else if ( filteredPropertyMaps.Any( x => x.Value.PropertyMapType == PropertyMapType.ColumnName && x.Value.ColumnName == dataRecord.GetName( i ) ) )
                        propertyInfo = filteredPropertyMaps.First( x => x.Value.ColumnName == dataRecord.GetName( i ) ).Key;
                    else if ( filteredPropertyMaps.Any( x => x.Key.Name == dataRecord.GetName( i ) ) )
                        propertyInfo = null;
                    else
                        propertyInfo = type.GetProperty( dataRecord.GetName( i ) );
                    if ( propertyInfo != null && propertyInfo.GetActualPropertyType() == dataRecord.GetFieldType( i ) && filteredPropertyMaps.Where( x => x.Value.PropertyMapType == PropertyMapType.Func ).All( x => x.Key != propertyInfo ) )
                    {
                        emitter.Emit( OpCodes.Ldloc, objectVariable );
                        DataReaderEmitter.GetPropertyValue( emitter, propertyInfo.PropertyType, i, propertyInfo.IsNullable() );
                        emitter.Emit( OpCodes.Callvirt, propertyInfo.GetSetMethod() );
                    }
                }
            }

            foreach ( var propertyMap in filteredPropertyMaps.Where( x => x.Value.PropertyMapType == PropertyMapType.Func ) )
            {
                var propertyMapLocal = localPropertyMapsBuilders[ propertyMap.Key ];

                emitter.Emit( OpCodes.Ldloc, objectVariable );
                emitter.Emit( OpCodes.Ldloc, propertyMapLocal );
                emitter.Emit( OpCodes.Ldarg_0 );
                emitter.Emit( OpCodes.Call, propertyMapLocal.LocalType.GetMethod( "Invoke" ) );
                emitter.Emit( OpCodes.Callvirt, propertyMap.Key.GetSetMethod() ?? propertyMap.Key.GetSetMethod( true ) );
            }

            emitter.Emit( OpCodes.Ldloc, objectVariable );
            emitter.Emit( OpCodes.Ret );

            return (Func<IDataRecord, Dictionary<MappingEnum, object>, object>)method.CreateDelegate( typeof( Func<IDataRecord, Dictionary<MappingEnum, object>, object> ) );
        }
开发者ID:jrote1,项目名称:SqlObjectHydrator,代码行数:90,代码来源:ObjectSettingEmitter.cs

示例13: DynamicDataRecordCodeGenerator

        private string DynamicDataRecordCodeGenerator(IDataRecord source)
        {
            StringBuilder objectCreator = new StringBuilder("");

            objectCreator.Append(string.Format("{0}return new {0}{1}", FirstTab, "{"));

            for (int index = 0; index < source.FieldCount; index++)
            {
                // example: Address = (string)record[0],
                objectCreator.Append(string.Format("{0}   {1} = record.IsDBNull({3}) ? default({4}) : ({2})record[{3}],",
                    FirstTab,
                    source.GetName(index),
                    source.GetFieldType(index).FullName,
                    index,
                    source.GetFieldType(index)));
            }

            string body = objectCreator.ToString().TrimEnd(',') + FirstTab + "};";

            return body;
        }
开发者ID:Behzadkhosravifar,项目名称:TinyMapper,代码行数:21,代码来源:TargetMapperBuilder.IDataRecord.cs

示例14: GetUTF8String

 private static String GetUTF8String(IDataRecord dr, string field) {
     if (typeof(string) == dr.GetFieldType(dr.GetOrdinal(field))) {
         return MediaWikiDA.Latin1ToUTF8(DbUtils.Convert.To<string>(dr[field], null));
     } else {
         return Encoding.UTF8.GetString(DbUtils.Convert.To<byte[]>(dr[field], null));
     }
 }
开发者ID:StackableRegiments,项目名称:metl2011,代码行数:7,代码来源:MediaWikiDA.cs


注:本文中的IDataRecord.GetFieldType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。