SqlCommand方法结果可供其他方法访问

本文关键字:方法 其他 访问 结果 SqlCommand | 更新日期: 2023-09-27 18:27:12

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

    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 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,我不确定确切的值,但当我选择_year()时,结果应该是2013。当我将用于choose_year的SqlCommand放入用于choose_tour的方法中时,结果是2013。我做错了什么?非常感谢您的时间和建议。

我想,当我做公开的一年;使用与choose_year()中的结果相同的名称,它将合并。我很长时间没有编程了,所以我对自己的错误感到抱歉。

SqlCommand方法结果可供其他方法访问

choose_year()方法中,您有

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

前面的int?表示您正在声明另一个变量来保存年份值,您想要的代码可能是这个

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

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

     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);
  }

试一下它应该能工作