Member 12314309 Ответов: 1

Я хочу использовать два запроса sum и search , , in ASP.NET в одной кнопке, но на кнопке click работает только один запрос поиска ?


protected void btnsrch_Click(object sender, EventArgs e)


   {

           SqlCommand com;
           String str;

           str = "select * From Student where IDStd='" + TBSTDID.Text.Trim() + "'";
           com = new SqlCommand(str, con);
           SqlDataReader reader = com.ExecuteReader();
           if (reader.Read())
           {
               TBSTDNam.Text = reader["StdNam"].ToString();
               TBTTFe.Text = reader["Total_Fees"].ToString();
               TBCELL.Text = reader["Cell"].ToString();

               reader.Close();



               String S2 = "Select Sum(Rec_Mth_Amt) as TotalFee from Fee where IDStd='" + TBSTDID.Text + "'";
               SqlCommand cmd = new SqlCommand(S2, con);
               SqlDataReader dr;
               dr = cmd.ExecuteReader();
               if (dr.Read())
               {

                   int d = (int)dr["TotalFee"];
                   // TBSTDID.Visible = true;
                   TBpaid.Text = d.ToString();
               }


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

я использую если еще условие но не работает

Richard MacCutchan

В приведенном выше коде нет if/else.

1 Ответов

Рейтинг:
1

Richard Deeming

Исправьте это SQL-инъекция[^] уязвимость в вашем коде.

Оберните одноразовые предметы в using блоки.

Не храните соединения с базой данных в полях или свойствах класса.

Если вы просто загружаете одно значение из одной строки, ExecuteScalar это проще, чем ExecuteReader.

Если в списке нет совпадающих записей, то Fee таблица, то вам нужно будет поместить подходящее значение по умолчанию в текстовое поле.

protected void btnsrch_Click(object sender, EventArgs e)
{
    using (SqlConnection connection = new SqlConnection("..."))
    {
        connection.Open();
        
        using (SqlCommand cmd = new SqlCommand("SELECT StdName, Total_Fees, Cell FROM Student WHERE IDStd = @IDStd", connection))
        {
            cmd.Parameters.AddWithValue("@IDStd", TBSTDID.Text);
            
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                   TBSTDNam.Text = reader["StdNam"].ToString();
                   TBTTFe.Text = reader["Total_Fees"].ToString();
                   TBCELL.Text = reader["Cell"].ToString();
                }
            }
        }
        
        using (SqlCommand cmd = new SqlCommand("SELECT Sum(Rec_Mth_Amt) FROM Fee WHERE IDStd = @IDStd", connection))
        {
            cmd.Parameters.AddWithValue("@IDStd", TBSTDID.Text);
            
            object totalFee = cmd.ExecuteScalar();
            if (totalFee != null && !Convert.IsDBNull(totalFee))
            {
                TBpaid.Text = totalFee.ToString();
            }
            else
            {
                TBpaid.Text = "0";
            }
        }
    }
}
Если это все еще не работает, тогда вам нужно будет объяснить, в чем проблема.