无法更新数据集工作

时间:2014-01-19 21:21:08

标签: c# database visual-studio-2012 dataset

我有几个问题。我正在我的大学提交健身房管理系统。我通过阅读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日提交这个项目。

1 个答案:

答案 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);