我有几个问题。我正在我的大学提交健身房管理系统。我通过阅读www.homeandlearn.co.uk上的教程实现了一个基于服务的数据库。问题是我无法更新它
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Gym_Management_System
{
class GMSDConnectionClass
{
public string sql_string;
public string strCon;
public string Sql
{
set { sql_string = value; }
}
public string connection_string
{
set { strCon = value; }
}
public System.Data.DataSet GetConnection
{
get { return MyDataSet(); }
}
public System.Data.DataSet MyDataSet()
{
System.Data.SqlClient.SqlConnection con = new
System.Data.SqlClient.SqlConnection(strCon);
con.Open();
System.Data.SqlClient.SqlDataAdapter da_1 = new
System.Data.SqlClient.SqlDataAdapter(sql_string, con);
System.Data.DataSet dat_set = new System.Data.DataSet();
da_1.Fill(dat_set, "Table_data_1");
con.Close();
return dat_set;
}
public void UpdateDatabase(System.Data.DataSet ds)
{
System.Data.SqlClient.SqlCommandBuilder cb = new
System.Data.SqlClient.SqlCommandBuilder(da_1);
cb.DataAdapter.Update(ds.Tables[0]);
}
}
}
问题是我无法在da_1
方法中访问UpdateDatabase()
。
那里有什么问题?我尝试了几件事,但我无法得到它。这可能是一个简单的问题,但我对数据库和这些东西都是全新的。
注意: 我必须在2014年1月23日提交这个项目。
答案 0 :(得分:1)
无法在声明范围之外访问变量。有各种范围规则..你最关心的是方法范围。这可能有助于解释:
public System.Data.DataSet MyDataSet()
{
// da_1 is delcared in this method.. it is only available here
...
System.Data.SqlClient.SqlDataAdapter da_1 = new
System.Data.SqlClient.SqlDataAdapter(sql_string, con);
...
}
public void UpdateDatabase(System.Data.DataSet ds)
{
// not available here
}
为了在类中的方法之间访问它...您必须在类级别声明它:
class GMSDConnectionClass
{
System.Data.SqlClient.SqlDataAdapter da_1;
然后您可以在其他方法中将其指定为:
da_1 = new System.Data.SqlClient.SqlDataAdapter(sql_string, con);