38 lines
994 B
C#
38 lines
994 B
C#
|
using MySqlConnector;
|
||
|
|
||
|
namespace Tiger.Storage;
|
||
|
|
||
|
public class DatabaseConnection : IAsyncDisposable
|
||
|
{
|
||
|
private readonly MySqlConnection _connection;
|
||
|
private readonly MySqlCommand _command;
|
||
|
|
||
|
public DatabaseConnection(MySqlConnection connection)
|
||
|
{
|
||
|
_connection = connection;
|
||
|
_command = connection.CreateCommand();
|
||
|
}
|
||
|
|
||
|
public async Task<MySqlDataReader> GetResultSet(string query, params (string, object)[] mysqlParams)
|
||
|
{
|
||
|
await _connection.OpenAsync();
|
||
|
|
||
|
_command.CommandText = query;
|
||
|
|
||
|
foreach (var mysqlParam in mysqlParams)
|
||
|
{
|
||
|
_command.Parameters.AddWithValue(mysqlParam.Item1, mysqlParam.Item2);
|
||
|
}
|
||
|
|
||
|
var reader = await _command.ExecuteReaderAsync();
|
||
|
_command.Parameters.Clear();
|
||
|
return reader;
|
||
|
}
|
||
|
|
||
|
public async ValueTask DisposeAsync()
|
||
|
{
|
||
|
await _connection.DisposeAsync();
|
||
|
await _command.DisposeAsync();
|
||
|
GC.SuppressFinalize(this);
|
||
|
}
|
||
|
}
|