コード例 #1
0
        internal override void InitializeParameter(ProviderType type, DbParameter parameter, object value)
        {
            SqlType sqlType = (SqlType)type;

            if (sqlType.IsRuntimeOnlyType)
            {
                throw Error.BadParameterType(sqlType.GetClosestRuntimeType());
            }
            System.Data.SqlClient.SqlParameter sParameter = parameter as System.Data.SqlClient.SqlParameter;
            if (sParameter != null)
            {
                sParameter.SqlDbType = sqlType.SqlDbType;
                if (sqlType.HasPrecisionAndScale)
                {
                    sParameter.Precision = (byte)sqlType.Precision;
                    sParameter.Scale     = (byte)sqlType.Scale;
                }
            }
            else
            {
                PropertyInfo piSqlDbType = parameter.GetType().GetProperty("SqlDbType");
                if (piSqlDbType != null)
                {
                    piSqlDbType.SetValue(parameter, sqlType.SqlDbType, null);
                }
                if (sqlType.HasPrecisionAndScale)
                {
                    PropertyInfo piPrecision = parameter.GetType().GetProperty("Precision");
                    if (piPrecision != null)
                    {
                        piPrecision.SetValue(parameter, Convert.ChangeType(sqlType.Precision, piPrecision.PropertyType, CultureInfo.InvariantCulture), null);
                    }
                    PropertyInfo piScale = parameter.GetType().GetProperty("Scale");
                    if (piScale != null)
                    {
                        piScale.SetValue(parameter, Convert.ChangeType(sqlType.Scale, piScale.PropertyType, CultureInfo.InvariantCulture), null);
                    }
                }
            }
            parameter.Value = GetParameterValue(sqlType, value);

            int?determinedSize = DetermineParameterSize(sqlType, parameter);

            if (determinedSize.HasValue)
            {
                parameter.Size = determinedSize.Value;
            }
        }
コード例 #2
0
 protected object GetParameterValue(SqlType type, object value)
 {
     if (value == null)
     {
         return(DBNull.Value);
     }
     else
     {
         Type vType = value.GetType();
         Type pType = type.GetClosestRuntimeType();
         if (pType == vType)
         {
             return(value);
         }
         else
         {
             return(DBConvert.ChangeType(value, pType));
         }
     }
 }
コード例 #3
0
		protected object GetParameterValue(SqlType type, object value)
		{
			if(value == null)
			{
				return DBNull.Value;
			}
			else
			{
				Type vType = value.GetType();
				Type pType = type.GetClosestRuntimeType();
				if(pType == vType)
				{
					return value;
				}
				else
				{
					return DBConvert.ChangeType(value, pType);
				}
			}
		}