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);
+ }
}
}