MES-ETL/MesETL.App/Helpers/DatabaseHelper.cs

54 lines
1.8 KiB
C#
Raw Normal View History

2024-01-19 11:17:22 +08:00
using System.Data;
using MySqlConnector;
namespace MesETL.App.Helpers;
2024-01-19 11:17:22 +08:00
public static class DatabaseHelper
{
2024-01-29 09:29:16 +08:00
public static async Task<DataSet> QueryTableAsync(string connStr, string sql)
2024-01-19 11:17:22 +08:00
{
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();
2024-02-01 15:25:42 +08:00
new MySqlDataAdapter(cmd).Fill(ds);
2024-01-19 11:17:22 +08:00
return ds;
}
2024-01-29 09:29:16 +08:00
public static async Task<object?> QueryScalarAsync(string connStr, string sql)
2024-01-19 11:17:22 +08:00
{
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();
}
2024-01-29 09:29:16 +08:00
public static async Task<int> NonQueryAsync(string connStr, string sql)
2024-01-19 11:17:22 +08:00
{
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<int> 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;
}
}