How to handle SqlDatareader on N-tier application?
<p>I am confuse where can i make my code to n-tier:
While learning n-tier i know now how to insert,delete,update.
But now i am confused how to deal with sqldatareader to bind data on listbox and combo box:</p>

<p>This code works on my presentation layer but dont know how to convert it to layers as DataAccess,BusinessObject,BusinessLogic.</p>

<pre><code>FormLoad
{
getlistview();
cboStatus();
}

#region "fill listview"
public void GetlistView()
{
        int i = 0;

        SqlConnection sqlcon = new SqlConnection(connStr);
       lstBF.Items.Clear();
        SqlCommand sqlcom = new SqlCommand("sp_LoadNew", sqlcon);
        SqlDataReader dr;
        lstBF.Items.Clear();
        sqlcon.Open();
        dr = sqlcom.ExecuteReader();

        while (dr.Read())
        {
            lstBF.Items.Add(dr["SerialNumber"].ToString());
            lstBF.Items[i].SubItems.Add(dr["PartNumber"].ToString());
            lstBF.Items[i].SubItems.Add(dr["StatusDescription"].ToString());
            lstBF.Items[i].SubItems.Add(dr["CustomerName"].ToString());
            lstBF.Items[i].SubItems.Add(dr["DateCreated"].ToString());
            lstBF.Items[i].SubItems.Add(dr["CreatedBy"].ToString());
            lstBF.Items[i].SubItems.Add(dr["ModifiedBy"].ToString());

            i = i + 1;
        }

        if (sqlcon.State == ConnectionState.Open) sqlcon.Close();
    }
    #endregion

    #region "ListviewChange"
    private void lstBF_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (lstBF.SelectedItems.Count == 1)
        {
          txtSerialNumber.Text = lstBF.SelectedItems[0].Text;
           txtPartNumber.Text  = lstBF.SelectedItems[0].SubItems[1].Text;
           lblStatus.Text  = lstBF.SelectedItems[0].SubItems[2].Text;
          lblcustomer.Text = lstBF.SelectedItems[0].SubItems[3].Text;
         lblModifiedBy.Text  = lstBF.SelectedItems[0].SubItems[6].Text;
        }
    }
    #endregion

    #region "FILL combo"
    public void cboStatus()
    {
        try
        {
          SqlConnection conn = new SqlConnection(connStr);
            SqlCommand sqlcom = new SqlCommand("sp_loadStatus",conn);
            SqlDataReader dr = null;
            conn.Open();
            dr = sqlcom.ExecuteReader();
            cmbStatus.Items.Clear();

            while (dr.Read())
            {
                 cmbStatus.Items.Add((dr["StatusDescription"]));
            }

            if (conn.State == ConnectionState.Open) conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error Occurred:" + ex);
        }
        finally
        {
        }
    }
    #endregion
</code></pre>
