Freigeben über


Beispiel „GetMessages“

Dieses Thema enthält Beispielcode, mit dem Sie Nachrichten aus einer der Nicht-Ablehnungstabellen oder einer branchenspezifischen Tabelle (Lob) in lesbarer Form abrufen können. Zu den Nicht-Ablehnungstabellen für Nachrichten gehören MessageStorageIn und MessageStorageOut in der BizTalk Accelerator for RosettaNet-Datenbank (BTARN)Archive; Die BRANCHENtabellen enthalten MessageFromLOB und MessageToLOB in der BTARNDATA-Datenbank.

Verwenden Sie GetMessages entweder für die Problembehandlung oder die Entwicklung. Standardmäßig gibt der Code eine 64-Basiszeichenfolge zurück.

Hinweis

Der Beispielcode "GetMessages.cs" enthält zwei Codeabschnitte – einen zum Abrufen von Nachrichten aus einer der BRANCHENtabellen und einen zum Abrufen von Nachrichten aus einer der Nicht-Ablehnungstabellen. Erstellen Sie separate Anwendungen für jeden Zweck.

So rufen Sie Nachrichten aus einer BRANCHENtabelle ab

  1. Fügen Sie dem Programm den folgenden Beispielcode hinzu:

    private static string GetLOBMessage(string sMessageSource, string sMessageID)

  2. Legen Sie den sMessageSource Parameter entweder auf die Tabelle MessagesFromLOB oder MessagesToLOB fest.

  3. Legen Sie den sMessageID Parameter auf den Wert des Felds MessageID in der Datenbank fest.

    Hinweis

    Die Anwendung gibt eine Zeichenfolge zurück, die die abgerufene Nachricht enthält.

So rufen Sie Nachrichten aus einer Tabelle ohne Ablehnung ab

  1. Fügen Sie dem Programm den folgenden Beispielcode hinzu:

    private static string GetNRMessage(string sMessageSource, string sMessageID)

  2. Legen Sie den sMessageSource Parameter entweder auf die Tabelle MessageStorageIn oder MessageStorageOut fest.

  3. Legen Sie den sMessageID Parameter auf den Wert des Felds RecordID in der Datenbank fest.

    Hinweis

    Die Anwendung gibt eine Zeichenfolge zurück, die die abgerufene Nachricht enthält.

Zeigt

Das GetMessages-Beispiel enthält die folgenden beiden Codeabschnitte:

  • In einem Abschnitt wird gezeigt, wie Sie eine binäre Nachricht aus einer der Nicht-Ablehnungstabellen abrufen und in lesbare ASCII-Form konvertieren.

  • Im anderen Abschnitt erfahren Sie, wie Sie eine Nachricht aus einer der BRANCHENtabellen abrufen. Da sich eine Nachricht in einer LOB-Tabelle bereits im ASCII-Format befindet, ist dies eine SQL select-Anweisung.

    Wichtig

    Zu Demonstrationszwecken verwendet der bereitgestellte Beispielcode eine direkte SQL-Anweisung, die anfällig für SQL-Einschleusungsrisiken ist. In einer Produktionsumgebung wird empfohlen, parametrisierte gespeicherte SQL-Prozeduren anstelle der direkten SQL-Anweisung zu verwenden, um solche Sicherheitsrisiken zu verhindern.

Beispiel

Verwenden Sie einen der beiden Abschnitte im folgenden Codebeispiel zum Abrufen von Nachrichten aus einer der Nicht-Ablehnungstabellen oder einer der BRANCHENtabellen.

using System;  
using System.Text;  
using System.Data.SqlClient;   
using Microsoft.Solutions.BTARN.Shared;  
  
namespace Microsoft.Solutions.BTARN.Admin  
{  
  
      /// <summary>  
      /// Summary description for GetMessages.  
      /// </summary>  
      class GetMessages  
      {  
            /// <summary>  
            /// The main entry point for the application.  
            /// </summary>  
            [STAThread]  
            static void Main(string[] args)  
            {  
                  Console.WriteLine(GetLOBMessage("MessagesFromLOB", "bce5b580daf543a990a4f37331f31e42"));  
                  Console.WriteLine(GetLOBMessage("MessagesToLOB", "bce5b580daf543a990a4f37331f31e42"));  
                  Console.WriteLine(GetNRMessage("MessageStorageIn", "dc06e9cfecd746a889dd6ea7beb3ba21"));  
                  Console.WriteLine(GetNRMessage("MessageStorageOut", "dc06e9cfecd746a889dd6ea7beb3ba21"));  
            }  
  
            /// <summary>  
            /// Retrieve a message from the LOB tables in the BTARNDATA database  
            /// </summary>  
            /// <param name="sMessageSource">Can be either MessagesFromLOB or MessagesToLOB</param>  
            /// <param name="sMessageID">The value of the MessageID field in the database</param>  
            /// <returns>Returns a string that contains the retrieved message</returns>        
            private static string GetLOBMessage(string sMessageSource, string sMessageID)  
            {  
                  SqlDataReader localReader = null;  
                  SqlConnection sqlConnection = null;  
                  SqlCommand sqlCommand = null;  
                  string sReturnedMessage="";              
                  string sQuery;  
  
                  sqlConnection = new SqlConnection(RuntimeGlobal.DataDbConnectionString);  
                  sQuery = "SELECT ServiceContent from " + sMessageSource + " WHERE MessageID=N'" + sMessageID +"'";  
  
                  sqlCommand = new SqlCommand(sQuery, sqlConnection);  
                  sqlConnection.Open();  
  
                  localReader = sqlCommand.ExecuteReader();  
  
                  if (localReader.Read())  
                        sReturnedMessage=localReader.GetString(0);  
  
                  localReader.Close();  
                  sqlConnection.Close();        
                  return sReturnedMessage;              
            }  
  
            /// <summary>  
            /// Retrieve a message from the non-repudiation tables in the BTARNArchive database  
            /// </summary>  
            /// <param name="sMessageSource">Can be either MessageStorageIn or MessageStorageOut</param>  
            /// <param name="sMessageID">The value of the RecordID field in the database</param>  
            /// <returns>Returns a string that contains the retrieved message</returns>  
            private static string GetNRMessage(string sMessageSource, string sMessageID)  
            {  
                  SqlDataReader localReader = null;  
                  SqlConnection sqlConnection = null;  
                  SqlCommand sqlCommand = null;  
                  string sReturnedMessage="";              
                  string sQuery;  
  
                  sqlConnection = new SqlConnection(RuntimeGlobal.ArchiveDbConnectionString);  
                  sQuery = "SELECT Content from " + sMessageSource + " WHERE RecordID=N'" + sMessageID +"'";  
  
                  sqlCommand = new SqlCommand(sQuery, sqlConnection);  
                  sqlConnection.Open();  
  
                  localReader = sqlCommand.ExecuteReader();  
  
                  if (localReader.Read())  
                  {  
                        //Determine the size of the field in bytes and create a new byte array  
                        byte[] bData= new byte[localReader.GetBytes(0, 0, null, 0, 0)];  
  
                        //Read the value of the field into bData  
                        localReader.GetBytes(0, 0, bData, 0, bData.Length);  
  
                        //Convert the byte array into a string  
                        sReturnedMessage=Encoding.ASCII.GetString(bData);  
                  }  
  
                  localReader.Close();  
                  sqlConnection.Close();        
                  return sReturnedMessage;              
            }  
      }  
}  

Weitere Informationen

Nachrichtenbeispiele