public async Task <User> GetUser(string userId, CancellationToken ct = default)
        {
            User returnUser = new User();

            try
            {
                if (!_conn.IsOpen)
                {
                    _conn.Open();
                }

                DB2Transaction trans = _conn.BeginTransaction();
                DB2Command     cmd   = _conn.CreateCommand();

                try
                {
                    cmd.Transaction = trans;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = $"SELECT * FROM USER_TABLE WHERE ID = '{userId}'";

                    using (DB2DataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            await reader.ReadAsync();

                            returnUser.FirstName  = reader[0].ToString().Trim();
                            returnUser.MiddleName = reader[1].ToString().Trim();
                            returnUser.LastName   = reader[2].ToString().Trim();
                            returnUser.UserId     = reader[3].ToString().Trim().Replace(".", "");
                        }
                        else
                        {
                            return(new User());
                        }
                    }
                    cmd.Transaction.Commit();

                    return(returnUser);
                }
                catch (Exception ex)
                {
                    cmd.Transaction.Rollback();
                    throw ex;
                }
            }
            catch (Exception ex)
            {
                if (_conn.IsOpen)
                {
                    _conn.Close();
                }
                throw ex;
            }
            finally
            {
                _conn.Close();
            }
        }
Example #2
0
 public async Task <bool> ReadAsync()
 {
     return(await _reader.ReadAsync());
 }