WEB开发网
开发学院数据库MSSQL Server 为SSIS编写自定义任务项(Task)之高级篇 阅读

为SSIS编写自定义任务项(Task)之高级篇

 2009-09-19 00:00:00 来源:WEB开发网   
核心提示:上一篇我们已经实现了一个自定义的编辑窗口,但里面没有任何内容,为SSIS编写自定义任务项(Task)之高级篇,我们也没有真正为其保存属性,这一篇我们将完成这个任务项, 我测试发现这样写是不行的,总是报告未将对象设置到引用实例,1. 为任务添加几个自定义属性#region属性privatestringsource=str

上一篇我们已经实现了一个自定义的编辑窗口,但里面没有任何内容,我们也没有真正为其保存属性。这一篇我们将完成这个任务项。

1. 为任务添加几个自定义属性

    #region 属性
    private string source = string.Empty;
    public string Source { get{return source;} set{source=value;}}
    private string target = string.Empty;
    public string Target { get { return target; } set { target = value; } }
    private string xpath = string.Empty;
    public string Xpath { get { return xpath; } set { xpath = value; } }
    private string defs = string.Empty;
    public string Namespacedefs { get { return defs; } set { defs = value; } }

    #endregion

【特别注意】这里的属性必须是按照上面的写法。如果用VS2008的简写方式,则会无效

所谓VS 2008的简写方式,是类似下面这样。 我测试发现这样写是不行的,总是报告未将对象设置到引用实例。

public string Source { get; set; }

2. 为任务项添加持久化支持

方法是,为任务项实现IDTSComponentPersist接口

    #region IDTSComponentPersist 成员
    /// <summary>
    /// 从包的那个XML文件中加载属性
    /// </summary>
    /// <param name="node"></param>
    /// <param name="infoEvents"></param>
    public void LoadFromXML(System.Xml.XmlElement node, IDTSInfoEvents infoEvents)
    {
      try
      {
        Source = node.SelectSingleNode("Source").InnerText;
        Target = node.SelectSingleNode("Target").InnerText;
        Xpath = node.SelectSingleNode("Xpath").InnerText;
        Namespacedefs = node.SelectSingleNode("NamespaceDefs").InnerText;
      }
      catch
      {
        throw;
      }
    }
    /// <summary>
    /// 将自定义属性保存到包中
    /// </summary>
    /// <param name="doc"></param>
    /// <param name="infoEvents"></param>
    public void SaveToXML(System.Xml.XmlDocument doc, IDTSInfoEvents infoEvents)
    {
      XmlElement taskElement = doc.CreateElement("MyXMLTask");
      XmlElement source = doc.CreateElement(string.Empty, "Source", string.Empty);
      source.InnerText = this.Source;
      XmlElement target = doc.CreateElement(string.Empty, "Target", string.Empty);
      target.InnerText = this.Target;
      XmlElement xpath = doc.CreateElement(string.Empty, "Xpath", string.Empty);
      xpath.InnerText = this.Xpath;
      XmlElement def = doc.CreateElement(string.Empty, "NamespaceDefs", string.Empty);
      def.InnerText = this.Namespacedefs;
      taskElement.AppendChild(source);
      taskElement.AppendChild(target);
      taskElement.AppendChild(xpath);
      taskElement.AppendChild(def);
      doc.AppendChild(taskElement);
    }
    #endregion

1 2 3 4 5 6  下一页

Tags:SSIS 编写 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接