Skip to content

Commit

Permalink
SqlDb bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
cattaneoinfoesse committed Sep 6, 2022
1 parent e9e8a45 commit a6df63c
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 19 deletions.
4 changes: 2 additions & 2 deletions ACUtils.SqlDb/ACUtils.SqlDb.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
<Authors>Andrea Cattaneo</Authors>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<Version>1.0.0.143</Version>
<PackageVersion>1.0.0.143</PackageVersion>
<Version>1.0.0.144</Version>
<PackageVersion>1.0.0.144</PackageVersion>
<Description>Utility per interrogazione database MSSQL</Description>
<NeutralLanguage>it</NeutralLanguage>
<IncludeSymbols>true</IncludeSymbols>
Expand Down
40 changes: 23 additions & 17 deletions ACUtils.SqlDb/SqlDb.cs
Original file line number Diff line number Diff line change
Expand Up @@ -327,18 +327,7 @@ public static T QuerySingleValue<T>(SqlConnection connection, string queryString
using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
{
object value = selectCommand.ExecuteScalar();
// conversione variabile da object a type specificato
//return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
var type = typeof(T);
if (Nullable.GetUnderlyingType(typeof(T)) != null)
{
type = Nullable.GetUnderlyingType(type);
if (value == null || value == DBNull.Value)
{
return default(T);
}
}
return (T)Convert.ChangeType(value, type);
return _changeType<T>(value);
}
}

Expand All @@ -347,13 +336,13 @@ public static Nullable<T> QueryNullableSingleValue<T>(SqlConnection connection,
using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
{
object value = selectCommand.ExecuteScalar();
if (value is DBNull)
if (value == null || value == DBNull.Value || value is DBNull)
{
return null;
}
// conversione variabile da object a type specificato
//return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
return (T?)Convert.ChangeType(value, typeof(T?));
return _changeType<T?>(value);
}
}

Expand Down Expand Up @@ -385,7 +374,7 @@ public static T QuerySingleValue<T>(SqlConnection connection, string queryString
using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams))
{
object value = selectCommand.ExecuteScalar();
return (T)Convert.ChangeType(value, typeof(T));
return _changeType<T>(value);
}
}

Expand All @@ -398,7 +387,7 @@ public T QuerySingleValue<T>(string queryString)
{
connection.Open();
var value = QuerySingleValue<T>(connection, queryString);
return (T)Convert.ChangeType(value, typeof(T));
return _changeType<T>(value);
}
catch (Exception ex)
{
Expand All @@ -418,7 +407,7 @@ public static T QuerySingleValue<T>(SqlConnection connection, string queryString
using (SqlCommand selectCommand = generateCommand(connection, queryString))
{
object value = selectCommand.ExecuteScalar();
return (T)Convert.ChangeType(value, typeof(T));
return _changeType<T>(value);
}
}

Expand Down Expand Up @@ -905,5 +894,22 @@ protected virtual void Dispose(bool disposing)
catch { }
}
#endregion


private static T _changeType<T>(object value)
{
// conversione variabile da object a type specificato
//return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value);
var type = typeof(T);
if (Nullable.GetUnderlyingType(typeof(T)) != null)
{
type = Nullable.GetUnderlyingType(type);
if (value == null || value == DBNull.Value)
{
return default(T);
}
}
return (T)Convert.ChangeType(value, type);
}
}
}

0 comments on commit a6df63c

Please sign in to comment.