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