This commit is contained in:
2023-08-27 09:44:19 +03:00
parent cb8ffde7c0
commit b09af0c79f
5 changed files with 179 additions and 32 deletions

View File

@@ -26,7 +26,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Количество затронутых строк</returns>
public async Task<int> ExecuteAsync (string sql, object values)
public async Task<int> ExecuteAsync (string sql, object? values = null)
{
// Подключаемся к БД
await using MySqlConnection connection = new(ConnectionString);
@@ -44,7 +44,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Количество затронутых строк</returns>
public int Execute (string sql, object values) => ExecuteAsync(sql, values).GetAwaiter().GetResult();
public int Execute (string sql, object? values = null) => ExecuteAsync(sql, values).GetAwaiter().GetResult();
/// <summary>
/// Запрос
@@ -53,7 +53,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
public async Task<IEnumerable<T>> QueryAsync<T> (string sql, object values)
public async Task<IEnumerable<T>> QueryAsync<T> (string sql, object? values = null)
{
// Подключаемся к БД
await using MySqlConnection connection = new(ConnectionString);
@@ -72,7 +72,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
public IEnumerable<T> Query<T> (string sql, object values) => QueryAsync<T>(sql, values).GetAwaiter().GetResult();
public IEnumerable<T> Query<T> (string sql, object? values = null) => QueryAsync<T>(sql, values).GetAwaiter().GetResult();
/// <summary>
/// Запрос строки
@@ -81,7 +81,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
public async Task<T?> QueryRowAsync<T> (string sql, object values)
public async Task<T?> QueryRowAsync<T> (string sql, object? values = null)
{
// Подключаемся к БД
await using MySqlConnection connection = new(ConnectionString);
@@ -100,7 +100,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
public T? QueryRow<T> (string sql, object values) => QueryRowAsync<T>(sql, values).GetAwaiter().GetResult();
public T? QueryRow<T> (string sql, object? values = null) => QueryRowAsync<T>(sql, values).GetAwaiter().GetResult();
#endregion
@@ -113,7 +113,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Массив результата запроса</returns>
public async Task<IEnumerable<T>> GetResultsAsync<T> (string sql, object values) => await QueryAsync<T>(sql, values);
public async Task<IEnumerable<T>> GetResultsAsync<T> (string sql, object? values = null) => await QueryAsync<T>(sql, values);
/// <summary>
/// Получает массив данных (SELECT * FROM...)
@@ -122,7 +122,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Массив результата запроса</returns>
public IEnumerable<T> GetResults<T> (string sql, object values) => GetResultsAsync<T>(sql, values).GetAwaiter().GetResult();
public IEnumerable<T> GetResults<T> (string sql, object? values = null) => GetResultsAsync<T>(sql, values).GetAwaiter().GetResult();
/// <summary>
/// Получает строку в массиве данных
@@ -131,7 +131,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Строки данных или null</returns>
public async Task<T?> GetRowAsync<T> (string sql, object values)
public async Task<T?> GetRowAsync<T> (string sql, object? values = null)
{
// Подключаемся к БД
await using MySqlConnection connection = new(ConnectionString);
@@ -150,7 +150,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Строки данных или null</returns>
public T? GetRow<T> (string sql, object values) => GetRowAsync<T>(sql, values).GetAwaiter().GetResult();
public T? GetRow<T> (string sql, object? values = null) => GetRowAsync<T>(sql, values).GetAwaiter().GetResult();
/// <summary>
/// Получает колонку в массиве данных
@@ -159,7 +159,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Колонка данных или null</returns>
public async Task<IEnumerable<T>> GetColAsync<T> (string sql, object values)
public async Task<IEnumerable<T>> GetColAsync<T> (string sql, object? values = null)
where T : IComparable, IConvertible, IEquatable<T> => await QueryAsync<T>(sql, values);
/// <summary>
@@ -169,7 +169,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Колонка данных или null</returns>
public IEnumerable<T> GetCol<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T> =>
public IEnumerable<T> GetCol<T> (string sql, object? values = null) where T : IComparable, IConvertible, IEquatable<T> =>
GetColAsync<T>(sql, values).GetAwaiter().GetResult();
/// <summary>
@@ -179,7 +179,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Поле или null</returns>
public async Task<T?> GetVarAsync<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T>
public async Task<T?> GetVarAsync<T> (string sql, object? values = null) where T : IComparable, IConvertible, IEquatable<T>
{
// Подключаемся к БД
await using MySqlConnection connection = new(ConnectionString);
@@ -198,7 +198,7 @@ public class MySqlEngine: IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Поле или null</returns>
public T? GetVar<T> (string sql, object values) where T : IComparable, IConvertible, IEquatable<T> =>
public T? GetVar<T> (string sql, object? values = null) where T : IComparable, IConvertible, IEquatable<T> =>
GetVarAsync<T>(sql, values).GetAwaiter().GetResult();
#endregion
@@ -363,7 +363,7 @@ public class MySqlEngine: IDbEngine
/// <param name="tableName">Имя таблицы</param>
/// <param name="whereConditionColumn">Условие поиска строки. ВНИМАНИЕ! Должно быть одним из указанных свойств типа класса data</param>
/// <returns>Результат выполнения</returns>
public bool DeleteRow<T>(T data, string tableName, string whereConditionColumn) where T : class =>
public bool DeleteRow<T> (T data, string tableName, string whereConditionColumn) where T : class =>
DeleteRowAsync(data, tableName, whereConditionColumn).GetAwaiter().GetResult();
#endregion
}

View File

@@ -1,4 +1,6 @@
namespace anbs_cp.Database.Interfaces;
using System.Transactions;
namespace anbs_cp.Database.Interfaces;
/// <summary>
/// Интерфейс для работы с базой данных
@@ -18,7 +20,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Количество затронутых строк</returns>
Task<int> ExecuteAsync (string sql, object values);
Task<int> ExecuteAsync (string sql, object? values = null);
/// <summary>
/// Выполняем команду
@@ -26,7 +28,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Количество затронутых строк</returns>
int Execute (string sql, object values);
int Execute (string sql, object? values = null);
/// <summary>
/// Запрос
@@ -35,7 +37,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
Task<IEnumerable<T>> QueryAsync<T> (string sql, object values);
Task<IEnumerable<T>> QueryAsync<T> (string sql, object? values = null);
/// <summary>
/// Запрос
@@ -44,7 +46,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
IEnumerable<T> Query<T> (string sql, object values);
IEnumerable<T> Query<T> (string sql, object? values = null);
/// <summary>
/// Запрос строки
@@ -53,7 +55,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
Task<T?> QueryRowAsync<T> (string sql, object values);
Task<T?> QueryRowAsync<T> (string sql, object? values = null);
/// <summary>
/// Запрос строки
@@ -62,7 +64,7 @@ public interface IDbEngine
/// <param name="sql">Запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Возвращает массив типа <see cref="T"/> или значение по умолчанию</returns>
T? QueryRow<T> (string sql, object values);
T? QueryRow<T> (string sql, object? values = null);
#endregion
#region Получение данных
@@ -74,7 +76,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Массив результата запроса</returns>
Task<IEnumerable<T>> GetResultsAsync<T> (string sql, object values);
Task<IEnumerable<T>> GetResultsAsync<T> (string sql, object? values = null);
/// <summary>
/// Получает массив данных (SELECT * FROM...)
@@ -83,7 +85,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Массив результата запроса</returns>
IEnumerable<T> GetResults<T> (string sql, object values);
IEnumerable<T> GetResults<T> (string sql, object? values = null);
/// <summary>
/// Получает строку в массиве данных
@@ -92,7 +94,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Строки данных или null</returns>
Task<T?> GetRowAsync<T> (string sql, object values);
Task<T?> GetRowAsync<T> (string sql, object? values = null);
/// <summary>
/// Получает строку в массиве данных
@@ -101,7 +103,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Строки данных или null</returns>
T? GetRow<T> (string sql, object values);
T? GetRow<T> (string sql, object? values = null);
/// <summary>
/// Получает колонку в массиве данных
@@ -110,7 +112,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Колонка данных или null</returns>
Task<IEnumerable<T>> GetColAsync<T> (string sql, object values) where T: IComparable, IConvertible, IEquatable<T>;
Task<IEnumerable<T>> GetColAsync<T> (string sql, object? values = null) where T: IComparable, IConvertible, IEquatable<T>;
/// <summary>
/// Получает колонку в массиве данных
@@ -119,7 +121,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Колонка данных или null</returns>
IEnumerable<T> GetCol<T> (string sql, object values) where T: IComparable, IConvertible, IEquatable<T>;
IEnumerable<T> GetCol<T> (string sql, object? values = null) where T: IComparable, IConvertible, IEquatable<T>;
/// <summary>
/// Получение значение единичного поля
@@ -128,7 +130,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Поле или null</returns>
Task<T?> GetVarAsync<T> (string sql, object values) where T: IComparable, IConvertible, IEquatable<T>;
Task<T?> GetVarAsync<T> (string sql, object? values = null) where T: IComparable, IConvertible, IEquatable<T>;
/// <summary>
/// Получение значение единичного поля
@@ -137,7 +139,7 @@ public interface IDbEngine
/// <param name="sql">SQL-запрос</param>
/// <param name="values">Данные запроса</param>
/// <returns>Поле или null</returns>
T? GetVar<T> (string sql, object values) where T: IComparable, IConvertible, IEquatable<T>;
T? GetVar<T> (string sql, object? values = null) where T: IComparable, IConvertible, IEquatable<T>;
#endregion

View File

@@ -8,7 +8,7 @@
<RootNamespace>anbs_cp.Database</RootNamespace>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageId>ANBSoftware.ComponentsPack.Database</PackageId>
<Version>2023.08.19.4</Version>
<Version>2023.08.27.0</Version>
<Company>Александр Бабаев</Company>
<Product>Набор компонентов ANB Software для работы с БД</Product>
<Description>Библиотека полезных методов языка C# для работы с базами данных</Description>