internal static object GetSqlValue(_SqlMetaData metaData, object comVal) { SqlDbType type = metaData.type; object sqlVal = null; bool isNull = (comVal == null) || (Convert.IsDBNull(comVal)); switch (type) { case SqlDbType.BigInt: sqlVal = isNull ? SqlInt64.Null : new SqlInt64((Int64)comVal); break; case SqlDbType.Binary: case SqlDbType.Timestamp: case SqlDbType.Image: case SqlDbType.VarBinary: // HACK!!! We have an internal type for smallvarbinarys stored on TdsEnums. We // store on TdsEnums instead of SqlDbType because we do not want to expose // this type to the user! case TdsEnums.SmallVarBinary: sqlVal = isNull ? SqlBinary.Null : new SqlBinary((byte[])comVal); break; case SqlDbType.Bit: sqlVal = isNull ? SqlBoolean.Null : new SqlBoolean((bool)comVal); break; case SqlDbType.Char: case SqlDbType.VarChar: case SqlDbType.Text: case SqlDbType.NChar: case SqlDbType.NVarChar: case SqlDbType.NText: if (isNull) { sqlVal = SqlString.Null; } else { if (null != metaData.collation) { int lcid = TdsParser.Getlcid(metaData.collation); SqlCompareOptions options = TdsParser.GetSqlCompareOptions(metaData.collation); sqlVal = new SqlString((string)comVal, lcid, options); } else { sqlVal = new SqlString((string)comVal); } } break; case SqlDbType.DateTime: case SqlDbType.SmallDateTime: sqlVal = isNull ? SqlDateTime.Null : new SqlDateTime((DateTime)comVal); break; case SqlDbType.Money: case SqlDbType.SmallMoney: sqlVal = isNull ? SqlMoney.Null : new SqlMoney((Decimal)comVal); break; case SqlDbType.Real: sqlVal = isNull ? SqlSingle.Null : new SqlSingle((float)comVal); break; case SqlDbType.Float: sqlVal = isNull ? SqlDouble.Null : new SqlDouble((double)comVal); break; case SqlDbType.Decimal: sqlVal = isNull ? SqlDecimal.Null : new SqlDecimal((decimal)comVal); break; case SqlDbType.Int: sqlVal = isNull ? SqlInt32.Null : new SqlInt32((int)comVal); break; case SqlDbType.SmallInt: sqlVal = isNull ? SqlInt16.Null : new SqlInt16((Int16)comVal); break; case SqlDbType.TinyInt: sqlVal = isNull ? SqlByte.Null : new SqlByte((byte)comVal); break; case SqlDbType.UniqueIdentifier: sqlVal = isNull ? SqlGuid.Null : new SqlGuid((Guid)comVal); break; case SqlDbType.Variant: sqlVal = isNull ? DBNull.Value : MetaType.GetSqlValueFromComVariant(comVal); break; default: Debug.Assert(false, "unknown SqlDbType! Can't create SQL type"); break; } return(sqlVal); }