我有这个方法选择年份,我需要这个结果可以访问其他方法。我试过这个:
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()的结果相同,它将统一起来。我不是很长时间的编程,所以我很抱歉我的错。
答案 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);
}
尝试它应该工作