在一个类中定义函数并在其他类中调用不会继承控件

时间:2010-12-03 12:27:53

标签: c# visual-studio winforms

我在一个类中定义了函数,如

public static DataSet GetAllPrimaryKeyTables()
{
  //An instance of the connection string is created to manage the contents of the connection string.
  using(var sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]))
  {
    //To Open the connection.
    sConnection.Open();

    //Query to select the table_names that have PRIMARY_KEYS.
    string selectPrimaryKeys = @"SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
                                 WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME <> 'dtProperties'
                                 ORDER BY TABLE_NAME";

    //Create the command object
    using(var sCommand = new SqlCommand(selectPrimaryKeys, sConnection))
    {
      try
      {
        //Create the dataset.
        DataSet dsPrimaryKeyTables = new DataSet("INFORMATION_SCHEMA.TABLE_CONSTRAINTS ");

        //Create the dataadapter object.
        SqlDataAdapter daPrimaryKeyTables = new SqlDataAdapter(selectPrimaryKeys, sConnection);

        //Provides the master mapping between the sourcr table and system.data.datatable
        daPrimaryKeyTables.TableMappings.Add("Table", "INFORMATION_SCHEMA.TABLE_CONSTRAINTS ");

        //Fill the dataadapter.
        daPrimaryKeyTables.Fill(dsPrimaryKeyTables);

        //Bind the result combobox with non primary key table names
        DataViewManager dsvPrimaryKeyTables = dsPrimaryKeyTables.DefaultViewManager;

        return dsPrimaryKeyTables;
      }
      catch(Exception ex)
      {
        //Handles the exception and log that to the EventLog with the original message.
        EventLog log = new EventLog("Application");
        log.Source = "MFDBAnalyser";
        log.WriteEntry(ex.Message);

        return null;
      }
      finally
      {
        //checks whether the connection is still open.
        if(sConnection.State != ConnectionState.Closed)
        {
          sConnection.Close();
        }
      }
    }
  }
}

现在应该如何编码以便我可以在dafault数据集中的另一个类中调用该函数。

有人请帮帮我吗?

2 个答案:

答案 0 :(得分:1)

如果我理解你的话,在DataSet类型上使这个函数成为Extension Method将是唯一的问题,

答案 1 :(得分:0)

你会使用这样的东西。

Dataset myPrimaryKeyDataset = YourClassName.GetAllPrimaryKeyTables();

希望这有帮助。