Imported Upstream version 4.2.0.179

Former-commit-id: 0a113cb3a6feb7873f632839b1307cc6033cd595
This commit is contained in:
Xamarin Public Jenkins
2015-08-26 07:17:56 -04:00
committed by Jo Shields
parent 183bba2c9a
commit 6992685b86
7507 changed files with 90259 additions and 657307 deletions

View File

@@ -54,6 +54,21 @@ namespace System.Data.SqlClient {
[TypeConverterAttribute ("System.Data.SqlClient.SqlParameter+SqlParameterConverter, " + Consts.AssemblySystem_Data)]
public sealed class SqlParameter : DbParameter, IDbDataParameter, IDataParameter, ICloneable
{
#region Import from old DbParameter
static Hashtable dbTypeMapping = new Hashtable ();
internal static Hashtable DbTypeMapping {
get { return dbTypeMapping;}
set { dbTypeMapping = value;}
}
// LAMESPEC: Implementors should populate the dbTypeMapping accordingly
internal Type SystemType {
get {
return (Type) dbTypeMapping [SqlDbType];
}
}
#endregion
#region Fields
TdsMetaParameter metaParameter;
@@ -97,6 +112,8 @@ namespace System.Data.SqlClient {
DbTypeMapping.Add (SqlDbType.NVarChar, typeof (string));
DbTypeMapping.Add (SqlDbType.SmallDateTime, typeof (DateTime));
DbTypeMapping.Add (SqlDbType.DateTime, typeof (DateTime));
DbTypeMapping.Add (SqlDbType.DateTime2, typeof (DateTime));
DbTypeMapping.Add (SqlDbType.DateTimeOffset, typeof (DateTimeOffset));
DbTypeMapping.Add (SqlDbType.Decimal, typeof (decimal));
DbTypeMapping.Add (SqlDbType.Float, typeof (double));
DbTypeMapping.Add (SqlDbType.Binary, typeof (byte []));
@@ -162,6 +179,7 @@ namespace System.Data.SqlClient {
type_mapping.Add (typeof (SqlTypes.SqlXml), SqlDbType.Xml);
type_mapping.Add (typeof (object), SqlDbType.Variant);
type_mapping.Add (typeof (DateTimeOffset), SqlDbType.DateTimeOffset);
}
public SqlParameter ()
@@ -206,8 +224,7 @@ namespace System.Data.SqlClient {
scale,
GetFrameworkValue);
metaParameter.RawValue = value;
if (dbType != SqlDbType.Variant)
SqlDbType = dbType;
SqlDbType = dbType;
Direction = direction;
SourceColumn = sourceColumn;
SourceVersion = sourceVersion;
@@ -483,6 +500,7 @@ namespace System.Data.SqlClient {
SetSqlDbType ((SqlDbType) t);
}
/*
// Returns System.Type corresponding to the underlying SqlDbType
internal override Type SystemType {
get {
@@ -506,6 +524,7 @@ namespace System.Data.SqlClient {
}
}
}
*/
DbType DbTypeFromName (string name)
{
@@ -757,6 +776,14 @@ namespace System.Data.SqlClient {
MetaParameter.TypeName = "smalldatetime";
dbType = DbType.DateTime;
break;
case SqlDbType.DateTime2:
MetaParameter.TypeName = "datetime2";
dbType = DbType.DateTime2;
break;
case SqlDbType.DateTimeOffset:
MetaParameter.TypeName = "datetimeoffset";
dbType = DbType.DateTimeOffset;
break;
case SqlDbType.Decimal:
MetaParameter.TypeName = "decimal";
dbType = DbType.Decimal;
@@ -1050,6 +1077,13 @@ namespace System.Data.SqlClient {
object ConvertToFrameworkType (object value, Type frameworkType)
{
if (frameworkType == typeof (string)) {
if (value is DateTime)
return ((DateTime) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffff");
if (value is DateTimeOffset)
return ((DateTimeOffset) value).ToString ("yyyy-MM-dd'T'HH':'mm':'ss.fffffffzzz");
}
object sqlvalue = Convert.ChangeType (value, frameworkType);
switch (sqlDbType) {
case SqlDbType.Money: