コード例 #1
0
ファイル: ConnectionInfo.cs プロジェクト: hdallasr/OrionSDK
        public DataTable Query(string swql, out XmlDocument queryPlan, out XmlDocument queryStats)
        {
            XmlDocument tmpQueryPlan  = null; // can't reference out parameter from closure
            XmlDocument tmpQueryStats = null; // can't reference out parameter from closure

            DataTable result = DoWithExceptionTranslation(
                delegate
            {
                EnsureConnection();

                using (InformationServiceCommand command = new InformationServiceCommand(swql, Connection)
                {
                    ApplicationTag = "SWQL Studio"
                })
                {
                    foreach (var param in QueryParameters)
                    {
                        command.Parameters.AddWithValue(param.Key, param.Value);
                    }

                    InformationServiceDataAdapter dataAdapter = new InformationServiceDataAdapter(command);
                    DataTable resultDataTable = new DataTable();
                    dataAdapter.Fill(resultDataTable);

                    tmpQueryPlan  = dataAdapter.QueryPlan;
                    tmpQueryStats = dataAdapter.QueryStats;
                    return(resultDataTable);
                }
            });

            queryPlan  = tmpQueryPlan;
            queryStats = tmpQueryStats;
            return(result);
        }
コード例 #2
0
        public void FillData_DateTimeMode(DataSetDateTime dateTimeMode)
        {
            DataTable dataTable = new DataTable();

            InformationServiceDataAdapter instance = new InformationServiceDataAdapter();

            var nowUtc   = DateTime.UtcNow;
            var nowLocal = nowUtc.ToLocalTime();

            string col1Date = nowUtc.ToString("o");
            string col2Date = nowLocal.ToString("o");

            string response = $@"
<QueryXmlResponse xmlns='http://schemas.solarwinds.com/2007/08/informationservice'
xmlns:{InformationServiceDataReader.DBNullPrefix}='{InformationServiceDataReader.DBNullNamespace}'>
  <QueryXmlResult>
    <queryResult>
      <template>
        <resultset>
          <column name='col1' type='DateTime' ordinal='0'></column>
          <column name='col2' type='DateTime' ordinal='1'></column>
        </resultset>
      </template>
      <data>
        <row>
          <c0>{col1Date}</c0>
          <c1>{col2Date}</c1>
        </row>
      </data>
    </queryResult>
  </QueryXmlResult>
</QueryXmlResponse>
";

            using (InformationServiceDataReader reader = GetInformationServiceDataReader(response, dateTimeMode))
            {
                instance.FillData(dataTable, reader);
            }

            var dt1 = (DateTime)dataTable.Rows[0][0];
            var dt2 = (DateTime)dataTable.Rows[0][1];

            Assert.AreEqual(dateTimeMode, dataTable.Columns[0].DateTimeMode);
            Assert.AreEqual(dateTimeMode, dataTable.Columns[1].DateTimeMode);

            switch (dateTimeMode)
            {
            case DataSetDateTime.Local:
                Assert.AreEqual(nowLocal, dt1);
                Assert.AreEqual(DateTimeKind.Local, dt1.Kind);
                Assert.AreEqual(dt1, dt2);
                break;

            case DataSetDateTime.Utc:
                Assert.AreEqual(nowUtc, dt1);
                Assert.AreEqual(DateTimeKind.Utc, dt1.Kind);
                Assert.AreEqual(dt1, dt2);
                break;

            case DataSetDateTime.Unspecified:
                Assert.AreEqual(nowUtc, dt1);
                Assert.AreEqual(DateTimeKind.Unspecified, dt1.Kind);

                Assert.AreEqual(nowLocal, dt2);
                Assert.AreEqual(DateTimeKind.Unspecified, dt2.Kind);

                break;

            default:
                throw new NotImplementedException();
            }
        }