From 9ce24c3ebcce2de106402853c289f2f11edda04c Mon Sep 17 00:00:00 2001 From: Andrea Cattaneo Date: Tue, 2 Aug 2022 12:41:09 +0200 Subject: [PATCH] SqlDb - minor changes --- .../ACUtils.SqlDb.Utils.csproj | 4 +- ACUtils.SqlDb.Utils/DbFieldAttribute.cs | 2 +- ACUtils.SqlDb/ACUtils.SqlDb.csproj | 4 +- ACUtils.SqlDb/SqlDb.cs | 146 +++++++++++------- 4 files changed, 97 insertions(+), 59 deletions(-) diff --git a/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj b/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj index 70a177c..08d2726 100644 --- a/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj +++ b/ACUtils.SqlDb.Utils/ACUtils.SqlDb.Utils.csproj @@ -4,8 +4,8 @@ Andrea Cattaneo true false - 1.0.0.142 - 1.0.0.142 + 1.0.0.143 + 1.0.0.143 Utilities per gestione DataTable it true diff --git a/ACUtils.SqlDb.Utils/DbFieldAttribute.cs b/ACUtils.SqlDb.Utils/DbFieldAttribute.cs index 17aaa2f..f99d0f9 100644 --- a/ACUtils.SqlDb.Utils/DbFieldAttribute.cs +++ b/ACUtils.SqlDb.Utils/DbFieldAttribute.cs @@ -2,7 +2,7 @@ { public class DbFieldAttribute : System.Attribute, IDbFieldAttribute { - public string DbField { get; } + public string DbField { get; protected set; } public DbFieldAttribute(string db_field = null) { diff --git a/ACUtils.SqlDb/ACUtils.SqlDb.csproj b/ACUtils.SqlDb/ACUtils.SqlDb.csproj index 1f6b4de..79d8a2e 100644 --- a/ACUtils.SqlDb/ACUtils.SqlDb.csproj +++ b/ACUtils.SqlDb/ACUtils.SqlDb.csproj @@ -5,8 +5,8 @@ Andrea Cattaneo true false - 1.0.0.142 - 1.0.0.142 + 1.0.0.143 + 1.0.0.143 Utility per interrogazione database MSSQL it true diff --git a/ACUtils.SqlDb/SqlDb.cs b/ACUtils.SqlDb/SqlDb.cs index 2f43994..c9094e7 100644 --- a/ACUtils.SqlDb/SqlDb.cs +++ b/ACUtils.SqlDb/SqlDb.cs @@ -104,6 +104,15 @@ public static DataTable QueryDataTable(SqlConnection connection, string queryStr return ACUtils.DBModel.Idrate(dt); } + public async IAsyncEnumerable QueryManyAsync(string sql, params KeyValuePair[] queryParams) where T : ACUtils.DBModel, new() + { + var dt = QueryDataTable(sql, queryParams); + await foreach (var q in ACUtils.DBModel.IdrateAsyncGenerator(dt)) + { + yield return q; + } + } + public static List QueryMany(SqlConnection connection, string sql, params KeyValuePair[] queryParams) where T : ACUtils.DBModel, new() { var dt = QueryDataTable(connection, sql, queryParams); @@ -138,12 +147,16 @@ public DataSet QueryDataSet(string queryString, params KeyValuePair>[] queryParams) { - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); - DataSet ds = new DataSet(); - adapter.MissingSchemaAction = MissingSchemaAction; - adapter.Fill(ds); - return ds; + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) + { + using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand)) + { + DataSet ds = new DataSet(); + adapter.MissingSchemaAction = MissingSchemaAction; + adapter.Fill(ds); + return ds; + } + } } public DataSet QueryDataSet(string queryString, params KeyValuePair[] queryParams) @@ -171,12 +184,16 @@ public DataSet QueryDataSet(string queryString, params KeyValuePair[] queryParams) { - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); - DataSet ds = new DataSet(); - adapter.MissingSchemaAction = MissingSchemaAction; - adapter.Fill(ds); - return ds; + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) + { + using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand)) + { + DataSet ds = new DataSet(); + adapter.MissingSchemaAction = MissingSchemaAction; + adapter.Fill(ds); + return ds; + } + } } public DataSet QueryDataSet(string queryString) @@ -204,12 +221,16 @@ public DataSet QueryDataSet(string queryString) public static DataSet QueryDataSet(SqlConnection connection, string queryString) { - SqlCommand selectCommand = generateCommand(connection, queryString); - SqlDataAdapter adapter = new SqlDataAdapter(selectCommand); - DataSet ds = new DataSet(); - adapter.MissingSchemaAction = MissingSchemaAction; - adapter.Fill(ds); - return ds; + using (SqlCommand selectCommand = generateCommand(connection, queryString)) + { + using (SqlDataAdapter adapter = new SqlDataAdapter(selectCommand)) + { + DataSet ds = new DataSet(); + adapter.MissingSchemaAction = MissingSchemaAction; + adapter.Fill(ds); + return ds; + } + } } #endregion @@ -303,33 +324,37 @@ public T QuerySingleValue(string queryString, params KeyValuePair(SqlConnection connection, string queryString, params KeyValuePair[] queryParams) { - 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) + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) { - type = Nullable.GetUnderlyingType(type); - if (value == null || value == DBNull.Value) + 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) { - return default(T); + type = Nullable.GetUnderlyingType(type); + if (value == null || value == DBNull.Value) + { + return default(T); + } } + return (T)Convert.ChangeType(value, type); } - return (T)Convert.ChangeType(value, type); } public static Nullable QueryNullableSingleValue(SqlConnection connection, string queryString, params KeyValuePair[] queryParams) where T : struct { - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - object value = selectCommand.ExecuteScalar(); - if (value is DBNull) + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) { - return null; + object value = selectCommand.ExecuteScalar(); + if (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?)); } - // conversione variabile da object a type specificato - //return (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFrom(value); - return (T?)Convert.ChangeType(value, typeof(T?)); } public T QuerySingleValue(string queryString, params KeyValuePair>[] queryParams) @@ -357,9 +382,11 @@ public T QuerySingleValue(string queryString, params KeyValuePair(SqlConnection connection, string queryString, params KeyValuePair>[] queryParams) { - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - object value = selectCommand.ExecuteScalar(); - return (T)Convert.ChangeType(value, typeof(T)); + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) + { + object value = selectCommand.ExecuteScalar(); + return (T)Convert.ChangeType(value, typeof(T)); + } } @@ -388,9 +415,11 @@ public T QuerySingleValue(string queryString) public static T QuerySingleValue(SqlConnection connection, string queryString) { - SqlCommand selectCommand = generateCommand(connection, queryString); - object value = selectCommand.ExecuteScalar(); - return (T)Convert.ChangeType(value, typeof(T)); + using (SqlCommand selectCommand = generateCommand(connection, queryString)) + { + object value = selectCommand.ExecuteScalar(); + return (T)Convert.ChangeType(value, typeof(T)); + } } @@ -448,9 +477,11 @@ public static bool Execute(SqlConnection connection, string queryString, params { //queryString = queryString.Trim().Replace(System.Environment.NewLine, " "); //queryString = System.Text.RegularExpressions.Regex.Replace(queryString, @"\s+", " "); - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - var value = selectCommand.ExecuteNonQuery() > 0; - return value; + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) + { + var value = selectCommand.ExecuteNonQuery() > 0; + return value; + } } public bool Execute(string queryString, params KeyValuePair>[] queryParams) @@ -477,9 +508,11 @@ public bool Execute(string queryString, params KeyValuePair>[] queryParams) { - SqlCommand selectCommand = generateCommand(connection, queryString, queryParams); - var value = selectCommand.ExecuteNonQuery() > 0; - return value; + using (SqlCommand selectCommand = generateCommand(connection, queryString, queryParams)) + { + var value = selectCommand.ExecuteNonQuery() > 0; + return value; + } } public bool Execute(string queryString) @@ -507,8 +540,10 @@ public bool Execute(string queryString) public static bool Execute(SqlConnection connection, string queryString) { - SqlCommand selectCommand = generateCommand(connection, queryString); - return selectCommand.ExecuteNonQuery() > 0; + using (SqlCommand selectCommand = generateCommand(connection, queryString)) + { + return selectCommand.ExecuteNonQuery() > 0; + } } #endregion @@ -548,8 +583,7 @@ public static T GetColVal(DataRow dataRow, string columName) #region generateCommand private static SqlCommand generateCommand(SqlConnection connection, string queryString) { - SqlCommand command = new SqlCommand(queryString, connection); - return command; + return new SqlCommand(queryString, connection); } private static SqlCommand generateCommand(SqlConnection connection, string queryString, KeyValuePair[] queryParams) @@ -729,7 +763,7 @@ public void CompleteTransaction() public void AbortTransaction() { - if (Transaction.Current.TransactionInformation.Status == TransactionStatus.Active) + if (Transaction.Current?.TransactionInformation?.Status == TransactionStatus.Active) { scope?.Dispose(); } @@ -742,7 +776,7 @@ public void BulkInsert(string tablename, IEnumerable records) { using (var bc = new SqlBulkCopy(ConnectionString)) { - bc.WriteToServer(BulkInsertPrepare(bc, tablename, records)); + bc.WriteToServer(BulkInsertPrepare(bc, tablename, records)); } } public async System.Threading.Tasks.Task BulkInsertAsync(string tablename, IEnumerable records) @@ -864,7 +898,11 @@ public void Dispose() protected virtual void Dispose(bool disposing) { - AbortTransaction(); + try + { + AbortTransaction(); + } + catch { } } #endregion }