using System.Data; using System.Data.Common; using MySqlConnector; namespace TestProject1; public static class DatabaseHelper { public static async Task QueryTable(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 QueryScalar(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 NonQuery(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; } }