private async Task <MySqlResult> SelectPreparedStatementAsync(WorldPreparedStatement id, params object[] parameters) { PreparedStatement preparedStatement; if (!preparedStatements.TryGetValue(id, out preparedStatement)) { Debug.Assert(preparedStatement != null); return(null); } Debug.Assert(preparedStatement.Types.Count == parameters.Length); try { using (var connection = new MySqlConnection(connectionString)) { using (var command = new MySqlCommand(preparedStatement.Query, connection)) { for (int i = 0; i < preparedStatement.Types.Count; i++) { command.Parameters.Add("", preparedStatement.Types[i]).Value = parameters[i]; } await connection.OpenAsync(); return(await Task.Run(() => { using (MySqlDataReader commandReader = command.ExecuteReader(CommandBehavior.Default)) { using (var result = new MySqlResult()) { result.Load(commandReader); result.Count = (uint)result.Rows.Count; return result; } } })); } } } catch (Exception exception) { LogManager.Write("Database", $"An exception occured while selecting prepared statement {id}!"); LogManager.Write("Database", $"Exception: {exception.Message}"); } return(null); }
public async Task <Account> GetAccount(string username, string authToken) { MySqlResult result = await SelectPreparedStatementAsync(WorldPreparedStatement.AccountSelect, username, authToken); return(result.Count == 0u ? null : new Account(result.Rows[0])); }
public uint AccountMax() { MySqlResult result = SelectPreparedStatement(WorldPreparedStatement.AccountMax); return(result.Read <uint>(0u, "MAX(`id`)") + 1u); }
public async Task <DataRow> GetAccountAuth(string username, string password) { MySqlResult result = await SelectPreparedStatementAsync(WorldPreparedStatement.AccountAuthSelect, username, password); return(result.Count == 0u ? null : result.Rows[0]); }