SqlCommand方法结果可供其他方法使用

时间:2013-08-09 09:38:07

标签: c# sql sql-server winforms sqlcommand

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

    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.当我将select_year的SqlCommand放入我使用它的方法时choose_tour结果是2013年应该是。我究竟做错了什么?非常感谢您的时间和建议。

我想当我做公共年度;与choose_year()的结果相同,它将统一起来。我不是很长时间的编程,所以我很抱歉我的错。

2 个答案:

答案 0 :(得分:2)

您拥有的choose_year()方法中的

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

之前的int?表示您声明另一个变量以保存您想要的代码的年份值

Object mayBeNullYear = chooseyear.ExecuteScalar();
if(mayBeNullYear!=null)
this.year= (int)mayBeNullYear;

答案 1 :(得分: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);
  }

尝试它应该工作