Emmablakes Ответов: 1

Как вернуть выходной параметр


Я пытаюсь вернуть выходной параметр из этого метода, но у меня возникли проблемы.

Что я уже пробовал:

public void GetStaffName(string id, out string Name)
    {
        try
        {
           // dt = new DataTable();
            if (con.State != ConnectionState.Open)
            {
                con.Open();
            }
            string query = "select * from stafflist where staffidno = @staffidno";
            SqlCommand sqlCmd = new SqlCommand(query, con);
            sqlCmd.Parameters.AddWithValue("@staffidno", id);
            SqlDataReader dr = sqlCmd.ExecuteReader();
            

            while (dr.Read())
            {
                string Name = dr["emp_name"].ToString();
               // return Name;
            }
             

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            con.Close();
        }

    }

Richard MacCutchan

Какой вопрос? Пожалуйста, предоставьте соответствующие детали, мы не можем читать ваши мысли.

BillWoodruff

подумайте о том, чтобы инициализировать ' Name некоторым значением, которое сообщит вам, если совпадения не было, например:

Имя = " не найдено";

?

1 Ответов

Рейтинг:
10

OriginalGriff

Это в значительной степени то, что вам нужно сделать - за исключением того, что вам нужно присвоить ему значение на каждом пути кода, потому что это output параметр и вполне возможно, что while цикл не будет выполняться ни разу. и объявление переменной с тем же именем не будет работать!
Так что попробуй:

public void GetStaffName(string id, out string Name)
    {
    Name = "";
    try
        {
        if (con.State != ConnectionState.Open)
            {
            con.Open();
            }
        string query = "select * from stafflist where staffidno = @staffidno";
        using (SqlCommand sqlCmd = new SqlCommand(query, con))
            {
            sqlCmd.Parameters.AddWithValue("@staffidno", id);
            SqlDataReader dr = sqlCmd.ExecuteReader();
            if (dr.Read())
                {
                Name = dr["emp_name"].ToString();
                }
            }
        }
    catch (Exception ex)
        {
        throw ex;
        }
    finally
        {
        con.Close();
        }
    }