Handler Property Example (VJ++)

Microsoft ActiveX Data Objects (ADO)

Handler Property Example (VJ++)

This example demonstrates the RDS DataControl object Handler property. (See DataFactory Customization for more details.)

Assume the following sections in the parameter file, MSDFMAP.INI, located on the server:

[connect AuthorDataBase]
Access=ReadWrite
Connect="DSN=Pubs"
[sql AuthorById]
SQL="SELECT * FROM Authors WHERE au_id = ?"

Your code looks like the following. The command assigned to the SQL property will match the AuthorById identifier, and retrieve a row for author, Michael O'Leary. Although the Connect property in your code specifies the Northwind data source, that data source will be overwritten by the MSDFMAP.INI connect section. The DataControl object Recordset property is assigned to a disconnected Recordset object purely as a coding convenience.

import com.ms.wfc.data.*;
import com.ms.wfc.data.rds.*;
import java.io.* ;

public class HandlerX
{
    // The main entry point for the application.

    public static void main (String[] args)
    {
        HandlerX();
        System.exit(0);
    }

    // HandlerX function

    static void HandlerX()
    {

        // Define ADO Objects.
        Recordset rstAuthors = null;

        // Declarations.
        BufferedReader in = 
            new BufferedReader (new InputStreamReader(System.in));
        int intCount = 0;
        int intDisplaysize = 15;

        try
        {
            IBindMgr dc = (IBindMgr) new DataControl();
            dc.setServer("http://tcsp636");
            dc.setConnect("Data Source=AuthorDatabase");
            dc.setSQL("AuthorById(267-41-2394)");
            dc.Refresh();                        // Retrieve the record.
            // Use another recordset as a convenience.
            rstAuthors = (Recordset)dc.getRecordset();
            System.out.println("Author is '" +
                               rstAuthors.getField("au_fname").getString() +
                               " " +
                               rstAuthors.getField("au_lname").getString() +
                               "'");

            // Cleanup objects before exit.
            rstAuthors.close();
            System.out.println("\nPress <Enter> to continue..");
            in.readLine();
        }
        catch( AdoException ae )
        {
            // Notify user of any errors that result from ADO.

            // As passing a Recordset, check for null pointer first.
            if (rstAuthors != null)
            {
                PrintProviderError(rstAuthors.getActiveConnection());
            }
            else
            {
                System.out.println("Exception: " + ae.getMessage());
            }
        }

        // System read requires this catch.
        catch( java.io.IOException je)
        {
            PrintIOError(je);
        }
        catch(java.lang.UnsatisfiedLinkError e)
        {
            System.out.println("Exception: " + e.getMessage());
        }
        catch(java.lang.NullPointerException ne)
        {
            System.out.println(
            "Exception: Attempt to use null where an object is required.");
        }
    }

    // PrintProviderError Function

    static void PrintProviderError( Connection Cnn1 )
    {
        // Print Provider errors from Connection object.
        // ErrItem is an item object in the Connection’s Errors collection.
        com.ms.wfc.data.Error  ErrItem = null;
        long nCount = 0;
        int  i      = 0;

        nCount = Cnn1.getErrors().getCount();

        // If there are any errors in the collection, print them.
        if( nCount > 0);
        {
            // Collection ranges from 0 to nCount - 1
            for (i = 0; i< nCount; i++)
            {
                ErrItem = Cnn1.getErrors().getItem(i);
                System.out.println("\t Error number: " + ErrItem.getNumber()
                    + "\t" + ErrItem.getDescription() );
            }
        }

    }

    // PrintIOError Function

    static void PrintIOError( java.io.IOException je)
    {
        System.out.println("Error \n");
        System.out.println("\tSource = " + je.getClass() + "\n");
        System.out.println("\tDescription = " + je.getMessage() + "\n");
    }
}