Supports method example (VJ++)

Applies to: Access 2013, Office 2013

This example uses the Supports method to display the options supported by a recordset opened with different cursor types. The DisplaySupport function is required for this example to run.

 
// BeginSupportsJ 
import com.ms.wfc.data.*; 
import java.io.*; 
 
public class SupportsX 
{ 
 // The main entry point of the application. 
 
 public static void main (String[] args) 
 { 
 SupportsX(); 
 System.exit(0); 
 } 
 // SupportsX Function 
 
 static void SupportsX() 
 { 
 // Define ADO Objects. 
 Recordset rstTitles = null; 
 
 // Declarations. 
 int[] aintCursorType = new int[4]; 
 String strCnn; 
 int intIndex; 
 BufferedReader in = 
 new BufferedReader(new InputStreamReader(System.in)); 
 
 try 
 { 
 // Open connections. 
 strCnn = "Provider='sqloledb';Data Source='MySqlServer';"+ 
 "Initial Catalog='Pubs';Integrated Security='SSPI';"; 
 
 // Fill array with CursorType constants. 
 aintCursorType[0] = AdoEnums.CursorType.FORWARDONLY; 
 aintCursorType[1] = AdoEnums.CursorType.KEYSET; 
 aintCursorType[2] = AdoEnums.CursorType.DYNAMIC; 
 aintCursorType[3] = AdoEnums.CursorType.STATIC; 
 
 // Open recordset using each CursorType and 
 // Optimistic Locking. Then call the DisplaySupport 
 // procedure to display the supported options. 
 for(intIndex = 0; intIndex < 4; intIndex++) 
 { 
 rstTitles = new Recordset(); 
 rstTitles.setCursorType(aintCursorType[intIndex]); 
 rstTitles.setLockType(AdoEnums.LockType.OPTIMISTIC); 
 rstTitles.open("Titles", strCnn, aintCursorType[intIndex], 
 AdoEnums.LockType.OPTIMISTIC, AdoEnums.CommandType.TABLE); 
 
 switch(aintCursorType[intIndex]) 
 { 
 case AdoEnums.CursorType.FORWARDONLY: 
 System.out.println("ForwardOnly cursor supports:"); 
 break; 
 case AdoEnums.CursorType.KEYSET: 
 System.out.println("Keyset cursor supports:"); 
 break; 
 case AdoEnums.CursorType.DYNAMIC: 
 System.out.println("Dynamic cursor supports:"); 
 break; 
 case AdoEnums.CursorType.STATIC: 
 System.out.println("Static cursor supports:"); 
 break; 
 default: 
 break; 
 } 
 DisplaySupport(rstTitles); 
 System.out.println("Press <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 (rstTitles!= null) 
 { 
 PrintProviderError(rstTitles.getActiveConnection()); 
 } 
 else 
 { 
 System.out.println("Exception: " + ae.getMessage()); 
 } 
 } 
 // System read requires this catch. 
 catch( java.io.IOException je) 
 { 
 PrintIOError(je); 
 } 
 
 finally 
 { 
 // Cleanup objects before exit. 
 if (rstTitles != null) 
 if (rstTitles.getState() == 1) 
 rstTitles.close(); 
 } 
 } 
 // DisplaySupport Function 
 
 static void DisplaySupport( Recordset rstTemp ) 
 { 
 long[] alngConstants = new long[11]; 
 boolean booSupports; 
 int intIndex; 
 try 
 { 
 // Fill array with cursor option constants. 
 alngConstants[0] = AdoEnums.CursorOption.ADDNEW; 
 alngConstants[1] = AdoEnums.CursorOption.APPROXPOSITION; 
 alngConstants[2] = AdoEnums.CursorOption.BOOKMARK; 
 alngConstants[3] = AdoEnums.CursorOption.DELETE; 
 alngConstants[4] = AdoEnums.CursorOption.FIND; 
 alngConstants[5] = AdoEnums.CursorOption.HOLDRECORDS; 
 alngConstants[6] = AdoEnums.CursorOption.MOVEPREVIOUS; 
 alngConstants[7] = AdoEnums.CursorOption.NOTIFY; 
 alngConstants[8] = AdoEnums.CursorOption.RESYNC; 
 alngConstants[9] = AdoEnums.CursorOption.UPDATE; 
 alngConstants[10] = AdoEnums.CursorOption.UPDATEBATCH; 
 
 for(intIndex = 0; intIndex <= 10; intIndex++) 
 { 
 booSupports = rstTemp.supports((int)alngConstants[intIndex]); 
 if (booSupports) 
 { 
 switch((int)alngConstants[intIndex]) 
 { 
 case AdoEnums.CursorOption.ADDNEW: 
 System.out.println(" AddNew"); 
 break; 
 case AdoEnums.CursorOption.APPROXPOSITION: 
 System.out.println( 
 " AbsolutePosition and AbsolutePage"); 
 break; 
 case AdoEnums.CursorOption.BOOKMARK: 
 System.out.println(" Bookmark"); 
 break; 
 case AdoEnums.CursorOption.DELETE: 
 System.out.println(" Delete"); 
 break; 
 case AdoEnums.CursorOption.FIND: 
 System.out.println(" Find"); 
 break; 
 case AdoEnums.CursorOption.HOLDRECORDS: 
 System.out.println(" Holding Records"); 
 break; 
 case AdoEnums.CursorOption.MOVEPREVIOUS: 
 System.out.println(" MovePrevious and Move"); 
 break; 
 case AdoEnums.CursorOption.NOTIFY: 
 System.out.println(" Notifications"); 
 break; 
 case AdoEnums.CursorOption.RESYNC: 
 System.out.println(" Resyncing Data"); 
 break; 
 case AdoEnums.CursorOption.UPDATE: 
 System.out.println(" Update"); 
 break; 
 case AdoEnums.CursorOption.UPDATEBATCH: 
 System.out.println(" Batch Updating"); 
 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 (rstTemp!= null) 
 { 
 PrintProviderError(rstTemp.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 Connections 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("\t Source: " + je.getClass() + "\n"); 
 System.out.println("\t Description: "+ je.getMessage() + "\n"); 
 } 
} 
// EndSupportsJ