1

我有这个选择年份的方法,我需要这个结果可以用于其他方法。我试过这个:

    void choose_year()
        {
    SqlCommand chooseyear = new SqlCommand("SELECT year FROM firma WHERE id=1", spojeni);

            spojeni.Open();

            int? year= (int?)chooseyear .ExecuteScalar();

            spojeni.Close();
}

并在我的公共部分类中放置 public int 我放置了“public int year”;

public partial class tours : Form
{


    SqlConnection spojeni = new SqlConnection(myConnection.DataSource.ConnectionString);


    public int year;

当我尝试从另一种方法访问结果时:

void choose_tour()
    {


        DataTable dt = new DataTable();
        SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM zajezd WHERE year="+year, spojeni);
        SDA.Fill(dt);
  }

它返回不同的值,例如 -1、1 或 0 我不确定,但是当我执行 choose_year() 时的值应该是 2013。当我将 SqlCommand for choose_year 放入方法中,我将它完全用于 choose_tour 结果应该是 2013 年。我究竟做错了什么?非常感谢您的时间和建议。

我想当我做 public int year 的时候;与导致 choose_year() 的名称相同,它将联合起来。我很久没有编程了,所以我很抱歉我的错误。

4

2 回答 2

2

choose_year()你有的方法

int? year= (int?)chooseyear.ExecuteScalar();

之前的int?意思是你声明另一个变量来保存年份的值你想要的代码可能是这个

Object mayBeNullYear = chooseyear.ExecuteScalar();
if(mayBeNullYear!=null)
this.year= (int)mayBeNullYear;
于 2013-08-09T09:44:59.617 回答
1

您的方法应该返回一年,例如

     int choose_year()
            {
        SqlCommand chooseyear = new SqlCommand("SELECT year FROM firma WHERE id=1", spojeni);

                spojeni.Open();

                int? year= (int?)chooseyear .ExecuteScalar();

                spojeni.Close();
return year;
    }

然后你在那些你需要那一年的函数中调用它,例如

void choose_tour()
    {

        int year =   choose_year();
        DataTable dt = new DataTable();
        SqlDataAdapter SDA = new SqlDataAdapter("SELECT * FROM zajezd WHERE year="+year, spojeni);
        SDA.Fill(dt);
  }

试试应该可以

于 2013-08-09T09:47:07.737 回答