MDAC 2.5 SDK - ADO


 

MoveFirst, MoveLast, MoveNext, and MovePrevious Methods Example (VJ++)

See Also

This example uses the MoveFirst, MoveLast, MoveNext, and MovePrevious methods to move the record pointer of a Recordset based on the supplied command. The MoveAny procedure is required for this procedure to run.

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

public class MoveFirstX  // DLL name.
{
// Main Function

public static void main( String rgArg[] )
{
   MoveFirstX();
}

// MoveFirstX Function

static void MoveFirstX()
{
   // Declarations
   Recordset rsAuthors = null;
   BufferedReader in = 
         new BufferedReader(new InputStreamReader(System.in));
   String  line = null;

   String strCnn = "Provider=sqloledb;data source=dianaped4;"
      + "Initial Catalog=Pubs;User Id=sa;Password=;";

   String strMessage = "UPDATE Titles SET type = 'psychology' "
      +"WHERE type = 'self_help'";

   int intCommand = 0;
   String strFName;
   String strLName;

   try
   {
      // Open recordset from Authors table.
      rsAuthors = new Recordset();
      rsAuthors.setCursorLocation( AdoEnums.CursorLocation.CLIENT );

      // Use client cursor to enable AbsolutePosition property.
      rsAuthors.open( "Authors", strCnn, AdoEnums.CursorType.STATIC,
         AdoEnums.LockType.BATCHOPTIMISTIC, AdoEnums.CommandType.TABLE );

      // Get user's move requests and show current record information.
      while( true )   // Continuous loop.
      {
      // Assign field information to variable to simplify output code.
         strFName = rsAuthors.getField("au_fname").getString();
         strLName = rsAuthors.getField("au_lname").getString();

         System.out.println
            ( "\nName: " + strFName + " " + strLName + "\n"
            + "Record " + rsAuthors.getAbsolutePosition()
            + " of " + rsAuthors.getRecordCount() + "\n\n" );
         System.out.println( "[1 - MoveFirst, 2 - MoveLast, \n");
         System.out.println( " 3 - MoveNext, 4 - MovePrevious]\n");

         // User types a number followed by enter (cr-lf).
         line = in.readLine();

         // No entry exits program loop.
         if (line.length() == 0) break;
         // Convert string entry to int.
         intCommand = Integer.parseInt(line);
         // Out of range entry exits program loop.
         if ((intCommand < 1) || (intCommand > 4)) break;

         // Call method based on user's validated selection.
         MoveAny(intCommand, rsAuthors);
      }
      rsAuthors.close();
   }
   catch( AdoException ae )
   {
      // Notify user of any errors that result from ADO.

      // As passing a Recordset, check for null pointer first.
      if (rsAuthors != null)
      {
         PrintProviderError(rsAuthors.getActiveConnection());
      }
      else
      {
         System.out.println("Exception: " + ae.getMessage());
      }
   }
   // System Read requires this catch.
   catch( java.io.IOException je )
   {
      PrintIOError(je);
   }
}

// MoveAny Function

static void MoveAny(int intChoice, Recordset rsTemp)
{
   // Move per selection from user, checking for BOF and EOF.
   try
   {
      switch(intChoice)
      {
      case 1:   // Equals char of 1.
         rsTemp.moveFirst();
         break;
      case 2:   // Equals char of 2.
         rsTemp.moveLast();
         break;
      case 3:   // Equals char of 3.
         rsTemp.moveNext();
         if(rsTemp.getEOF())
         {
            System.out.println("\nAlready at end of recordset!\n");
            rsTemp.moveLast();
         }
         break;
      case 4:   // Equals char of 4.
         rsTemp.movePrevious();
         if(rsTemp.getBOF())
         {
            System.out.println
               ("\nAlready at beginning of recordset!\n");
            rsTemp.moveFirst();
         }
         break;
      default:
         break;
      }
   }
   catch( AdoException ae )
   {
      // Notify user of any errors that result from ADO.

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

   // 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");
   }
}