From a6df63cfcfaed22498bc1f9c07585c18ea15b93c Mon Sep 17 00:00:00 2001 From: Andrea Cattaneo Date: Tue, 6 Sep 2022 15:05:45 +0200 Subject: [PATCH] SqlDb bugfix --- ACUtils.SqlDb/ACUtils.SqlDb.csproj | 4 +-- ACUtils.SqlDb/SqlDb.cs | 40 +++++++++++++++++------------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/ACUtils.SqlDb/ACUtils.SqlDb.csproj b/ACUtils.SqlDb/ACUtils.SqlDb.csproj index 79d8a2e..cf7c5ed 100644 --- a/ACUtils.SqlDb/ACUtils.SqlDb.csproj +++ b/ACUtils.SqlDb/ACUtils.SqlDb.csproj @@ -5,8 +5,8 @@ Andrea Cattaneo true false - 1.0.0.143 - 1.0.0.143 + 1.0.0.144 + 1.0.0.144 Utility per interrogazione database MSSQL it true diff --git a/ACUtils.SqlDb/SqlDb.cs b/ACUtils.SqlDb/SqlDb.cs index c9094e7..d145f35 100644 --- a/ACUtils.SqlDb/SqlDb.cs +++ b/ACUtils.SqlDb/SqlDb.cs @@ -327,18 +327,7 @@ public static T QuerySingleValue(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(value); } } @@ -347,13 +336,13 @@ public static Nullable QueryNullableSingleValue(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(value); } } @@ -385,7 +374,7 @@ public static T QuerySingleValue(SqlConnection connection, string queryString using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) { object value = selectCommand.ExecuteScalar(); - return (T)Convert.ChangeType(value, typeof(T)); + return _changeType(value); } } @@ -398,7 +387,7 @@ public T QuerySingleValue(string queryString) { connection.Open(); var value = QuerySingleValue(connection, queryString); - return (T)Convert.ChangeType(value, typeof(T)); + return _changeType(value); } catch (Exception ex) { @@ -418,7 +407,7 @@ public static T QuerySingleValue(SqlConnection connection, string queryString using (SqlCommand selectCommand = generateCommand(connection, queryString)) { object value = selectCommand.ExecuteScalar(); - return (T)Convert.ChangeType(value, typeof(T)); + return _changeType(value); } } @@ -905,5 +894,22 @@ protected virtual void Dispose(bool disposing) catch { } } #endregion + + + private static T _changeType(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); + } } }