Lookup unit info based upon XML Tag

Hide Topic ContentsShow Topic Contents
    1. Script
    2. Example Output

This script requires version SP8 or above.

Script

using System;

using System.Collections.Generic;

using System.IO;

using System.Linq;

using System.Xml;

using ATS.Shared.ADO.NET;

using ATS.EventService.Script.Classes;

public class Script : BaseScript

{

   protected override void ExecuteSubscript()

   {

      // Retrieve unit id from XML

      string unitIdText = GetTag("Unit.Id");

      // Convert from text to int

      int unitId = Convert.ToInt32(unitIdText);

      string connectString = ConnectionString; // This is a built-in property that gives the current connection string

      try

      {

         var data = new System.Data.DataTable("UnitInfo");

         

         var dataset = new System.Data.DataSet("BusInfo");

         

         dataset.Tables.Add(data);

         using (var sql = new AdoSql(connectString))

         {

            string cmd = " select rtrim(serial) as Serial, rtrim(identity_1) as Identity1, rtrim(identity_2) as Identity2" +

                         " from units" +

                         " where unit_id = ?";

            sql.SetCommand(cmd, CommandType.Text);

            sql.AddParameter("unit_id", unitId);

            sql.Fill(ref data);

            string result;

            using (StringWriter sw = new StringWriter())

            {

               dataset.WriteXml(sw);

               result = sw.ToString();

            }

            WriteLine(result);

         }

      }

      catch (Exception ex)

      {

         WriteLine(ex.Message);

      }

   }

}

Example Output

<BusInfo>

  <UnitInfo>

    <Serial>2HSCBAER72C032547</Serial>

    <Identity1>2506</Identity1>

    <Identity2>032547</Identity2>

  </UnitInfo>

</BusInfo>

Can we improve this topic?