保留 dataReader c# 中的 int 变量值

问题描述

我对 C# 没有太多经验,但我正在尝试使用个人财务制作一个简单的 Windows 窗体应用程序。 因此,我有 2 个 dataReader(我使用的是 Oracle 提供程序),以及仅从表中选择 2 列的 sql(oracle 表)命令,只有 1 个值,主要是收入 1 和收入 2 以及来自 a 的所有值的总和特定月份。

sql 字符串如下所示:

strsql_sel_income1 = "select disTINCT categorie,SUM(suma) from financiar where main_categ='income' and categorie IN ('income1') and EXTRACT(month FROM data)=" + luna_income + "  Group by categorie";
        strsql_sel_income2 = "select disTINCT categorie,SUM(suma) from financiar where main_categ='income' and categorie IN ('Income2') and EXTRACT(month FROM data)=" + luna_income + "  Group by categorie";

“luna_income”值取自我选择特定月份的组合框。 问题是当我尝试从数据读取器获得的值中声明一个 Int 变量时,这些变量没有保留在 while 语句之外... dr_income1/2 是 dataReader

if (dr_income1.HasRows)
            {
                while (dr_income1.Read())
                {
                       label26.Text = dr_income1.GetString(0) + ": " + dr_income1.GetInt32(1) + "\n";
                    int suma_income1 = dr_incomei1.GetInt32(1);

                }

            }
            else
            {
                label26.Text = "No info;
            }

所以,我有两个相似的数据读取器和两个 int 变量 suma_income1 和 suma_income2。如果我尝试对它们求和,在 WhIle 代码之外,我会得到零值。我应该在哪里声明这两个变量以及如何保留它们的值?

int suma_income_total = suma_income1 + suma_income2;
            label29.Text = "Income total: " + suma_income_total;

suma_income_total 为零!!!

dr_income1 = cm1.ExecuteReader();
dr_income2 = cm2.ExecuteReader();
  label26.Text = "";
  label28.Text = "";

            if (dr_income1.HasRows)
            {
                while (dr_income1.Read())
                {
                        label26.Text = dr_income1.GetString(0) + ": " + dr_income1.GetInt32(1) + "\n";
                    int suma_income1 = dr_income1.GetInt32(1);

                }
            }
            else
            {
                label26.Text = "No info";
            }
            
            if (dr_income2.HasRows)
            {
                while (dr_income2.Read())
                {
                 label28.Text = dr_income2.GetString(0) + ": " + dr_income2.GetInt32(1) + "\n";
                    int suma_income2 = dr_income2.GetInt32(1);
                }
            }
            else
            {
                label28.Text = "no info";
            }
                   
            int suma_income_total = suma_income1 + suma_income2;
            label29.Text = "income total: " + suma_income_total;
            
            dr_income2.Close();
            dr_income1.Close();

解决方法

我对您的代码进行了一些更改。这并不理想,因为有几种非常简单的方法。但它可以作为解决方法:

dr_income1 = cm1.ExecuteReader();
dr_income2 = cm2.ExecuteReader();
  label26.Text = "";
  label28.Text = "";

var suma_income1 =0;
var suma_income2 =0;

            if (dr_income1.HasRows)
            {
                while (dr_income1.Read())
                {
                        label26.Text = dr_income1.GetString(0) + ": " + dr_income1.GetInt32(1) + "\n";
                     suma_income1 += dr_income1.GetInt32(1);

                }
            }
            else
            {
                label26.Text = "No info";
            }
            
            if (dr_income2.HasRows)
            {
                while (dr_income2.Read())
                {
                 label28.Text = dr_income2.GetString(0) + ": " + dr_income2.GetInt32(1) + "\n";
                   suma_income2 += dr_income2.GetInt32(1);
                }
            }
            else
            {
                label28.Text = "no info";
            }
                   
            int suma_income_total = suma_income1 + suma_income2;
            label29.Text = "income total: " + suma_income_total;
            
            dr_income2.Close();
            dr_income1.Close();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...