using System.Data; using MySqlConnector; namespace ConsoleApp2.Helpers.Database; public static class DatabaseHelper { public static async Task QueryTableAsync(string connStr, string sql) { await using var conn = new MySqlConnection(connStr); if(conn.State is not ConnectionState.Open) await conn.OpenAsync(); await using var cmd = conn.CreateCommand(); cmd.CommandText = sql; var ds = new DataSet(); var adapter = new MySqlDataAdapter(cmd).Fill(ds); return ds; } public static async Task QueryScalarAsync(string connStr, string sql) { await using var conn = new MySqlConnection(connStr); if(conn.State is not ConnectionState.Open) await conn.OpenAsync(); await using var cmd = conn.CreateCommand(); cmd.CommandText = sql; return await cmd.ExecuteScalarAsync(); } public static async Task NonQueryAsync(string connStr, string sql) { await using var conn = new MySqlConnection(connStr); if(conn.State is not ConnectionState.Open) await conn.OpenAsync(); await using var cmd = conn.CreateCommand(); cmd.CommandText = sql; return await cmd.ExecuteNonQueryAsync(); } public static async Task TransactionAsync(string connStr, string sql, params MySqlParameter[] parameters) { await using var conn = new MySqlConnection(connStr); if(conn.State is not ConnectionState.Open) await conn.OpenAsync(); await using var trans = await conn.BeginTransactionAsync(); await using var cmd = conn.CreateCommand(); cmd.CommandText = sql; cmd.Transaction = trans; cmd.Parameters.AddRange(parameters); var rows = await cmd.ExecuteNonQueryAsync(); await trans.CommitAsync(); return rows; } }