Мне нужно добавить переменные int в моем коде вместе, какие-нибудь идеи, как? - PullRequest
0 голосов
/ 24 апреля 2020
private void button1_Click(object sender, EventArgs e)
{
    cmd = new SqlCommand("select * from package where pkgid = '" + txtpkgid.Text + "' ", con);
    con.Open();
    dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        int HC = Convert.ToInt32(dr["HC"]);
        int KC = Convert.ToInt32(dr["KC"]);
        int DC = Convert.ToInt32(dr["DC"]);
        int DONR = Convert.ToInt32(dr["DONR"]);
        int VNPR = Convert.ToInt32(dr["VNPR"]);

    }
    con.Close();


    cmd = new SqlCommand("select * from vehicle where RegistrationNo = '" + txtcarid.Text + "' ", con);
    con.Open();
    dr = cmd.ExecuteReader();

    while (dr.Read())
    {
        int VDP = Convert.ToInt32(dr["VDP"]);
    }
    con.Close();
}

Как добавить вышеперечисленное?

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

в основном я хочу получить Result = HC + KC + DC + DONR + VNPR + VDP и отобразить Result в метке.

Проблема в том, что я не знаю, как вывести значение VDP.

Ответы [ 3 ]

0 голосов
/ 24 апреля 2020

Вы должны объявить свой int во внешней области видимости, фактически они доступны только в блоке while.

        private void button1_Click(object sender, EventArgs e)
    {
        cmd = new SqlCommand("select * from package where pkgid = '" + txtpkgid.Text + "' ", con);
        con.Open();
        dr = cmd.ExecuteReader();

        //We declare variables here so we can access them
        int HC = 0;
        int KC = 0;
        int DC = 0;
        int DONR = 0;
        int VNPR = 0;
        int VDP = 0;

        while (dr.Read())
        {
            int HC = Convert.ToInt32(dr["HC"]);
            int KC = Convert.ToInt32(dr["KC"]);
            int DC = Convert.ToInt32(dr["DC"]);
            int DONR = Convert.ToInt32(dr["DONR"]);
            int VNPR = Convert.ToInt32(dr["VNPR"]);
        }
        con.Close();

        cmd = new SqlCommand("select * from vehicle where RegistrationNo = '" + txtcarid.Text + "' ", con);
        con.Open();
        dr = cmd.ExecuteReader();

        while (dr.Read())
        {
            int VDP = Convert.ToInt32(dr["VDP"]);
        }

        con.Close();

        int result = HC + KC + DC + DONR + VNPR VDP;

        //We pass the total to the label
        Yourlabel.Text = result;
    }
0 голосов
/ 24 апреля 2020

Я, вероятно, сделал бы это так, предполагая, что вы анализируете SqlConnection con, а также что у вашего RegistrationNo нет тех же столбцов, что и у таблицы pkgid.

public int AddSqlResults(SqlConnection con)
{
    int result = 0;
    var queries = new [] { "select * from package where pkgid = '" + txtpkgid.Text + "'", 
                           "select * from vehicle where RegistrationNo = '" + txtcarid.Text + "'" };
    foreach (var query in queries)
    {
        using (var cmd = new SqlCommand(query, con))
        {
            con.Open();
            using (var dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    result += Convert.ToInt32(dr["HC"]);
                    result += Convert.ToInt32(dr["KC"]);
                    result += Convert.ToInt32(dr["DC"]);
                    result += Convert.ToInt32(dr["DONR"]);
                    result += Convert.ToInt32(dr["VNPR"]);
                    result += Convert.ToInt32(dr["VDP"]);
                }
            }
        }
    }
    return result;
}  

Вызовите функционировать так ...

private void button1_Click(object sender, EventArgs e)
{
    label1.Text = AddSqlResults(con).ToString();
}
0 голосов
/ 24 апреля 2020

Что-то вроде этого:

    long result = 0;
    while (dr.Read())
    {
        result += Convert.ToInt32(dr["HC"]);
        result += Convert.ToInt32(dr["KC"]);
        result += Convert.ToInt32(dr["DC"]);
        result += Convert.ToInt32(dr["DONR"]);
        result += Convert.ToInt32(dr["VNPR"]);

    }
    con.Close();

Обратите внимание, что вы должны правильно распоряжаться объектами команды и читателя. И, как заметил другой комментатор, вы можете вычислить эту сумму на SQL стороне, поэтому вам не придется перебирать набор результатов. Если вы продолжаете использовать итератор на стороне клиента, также не забудьте добавить правильную обработку NULL, если dr [...] может вернуть null или DBNull.Value.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...