Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Access 2013, Office 2013
Dieses Beispiel veranschaulicht die Update-Methode in Verbindung mit der CancelUpdate-Methode.
// BeginUpdateJ
import java.io.*;
import com.ms.wfc.data.*;
public class UpdateX
{
// The main entry point of the application.
public static void main (String[] args)
{
UpdateX();
UpdateX2();
System.exit(0);
}
// UpdateX Function
static void UpdateX()
{
// Define ADO objects.
Recordset rstEmployees = null;
// Declarations.
String strCnn = "Provider='sqloledb';Data Source='MySqlServer';"+
"Initial Catalog='Pubs';Integrated Security='SSPI';";
String strOldFirst;
String strOldLast;
String strMessage;
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
try
{
// Open Recordset with names from Employees table.
rstEmployees = new Recordset();
rstEmployees.setCursorType(AdoEnums.CursorType.KEYSET);
rstEmployees.setLockType(AdoEnums.LockType.OPTIMISTIC);
rstEmployees.open("SELECT fname,lname FROM Employees " +
"ORDER BY lname", strCnn, AdoEnums.CursorType.KEYSET,
AdoEnums.LockType.OPTIMISTIC, AdoEnums.CommandType.TEXT);
// Store Original data.
strOldFirst = rstEmployees.getField("fname").getString();
strOldLast = rstEmployees.getField("lname").getString();
// Change data in edit buffer.
rstEmployees.getField("fname").setString("Linda");
rstEmployees.getField("lname").setString("Kobara");
// Show contents of buffer and get user input.
strMessage = "Edit in Progress :\n" +
"\tOriginal Data = " + strOldFirst + " " + strOldLast +
"\n\tData in Buffer = " +
rstEmployees.getField("fname").getString() + " " +
rstEmployees.getField("lname").getString() + "\n\n" +
"Use Update to replace the original data with " +
"the buffered data in the Recordset?Enter (Y/N)";
System.out.println(strMessage);
if(in.readLine().trim().equalsIgnoreCase("Y"))
rstEmployees.update();
else
rstEmployees.cancelUpdate();
// Show the resulting data.
System.out.println("Data in Recordset = " +
rstEmployees.getField("fname").getString() +
" " + rstEmployees.getField("lname").getString()+ "\n");
// Restore original data because this is a demonstration.
if(!(strOldFirst.equals(
rstEmployees.getField("fname").getString()) &&
strOldLast.equals(
rstEmployees.getField("lname").getString())))
{
rstEmployees.getField("fname").setString(strOldFirst);
rstEmployees.getField("lname").setString(strOldLast);
rstEmployees.update();
}
// Cleanup Objects before exit.
rstEmployees.close();
System.out.println("Press <Enter> to continue..");
in.readLine();
}
catch(AdoException ae)
{
// Notify the user of any errors that result from ADO.
// As passing a recordset, check for null pointer first.
if(rstEmployees != null)
{
PrintProviderError(rstEmployees.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 (rstEmployees != null)
if (rstEmployees.getState() == 1)
rstEmployees.close();
}
}
// UpdateX2 Function
static void UpdateX2()
{
// This example demonstrates the Update method in conjunction
// with the AddNew method.
// Define ADO Objects.
Connection cnn1 = null;
Recordset rstEmployees = null;
// Declarations.
String strCnn = "Provider='sqloledb';Data Source='MySqlServer';"+
"Initial Catalog='Pubs';Integrated Security='SSPI';";
String strEmpID;
String strOldFirst;
String strOldLast;
String strMessage;
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
try
{
// Open a connection.
cnn1 = new Connection();
cnn1.open(strCnn);
// Open Recordset with data from Employees table.
rstEmployees = new Recordset();
rstEmployees.setCursorType(AdoEnums.CursorType.KEYSET);
rstEmployees.setLockType(AdoEnums.LockType.OPTIMISTIC);
rstEmployees.open("employee", cnn1, AdoEnums.CursorType.KEYSET,
AdoEnums.LockType.OPTIMISTIC, AdoEnums.CommandType.TABLE);
rstEmployees.addNew();
strEmpID="B-S55555M";
rstEmployees.getField("emp_id").setString(strEmpID);
rstEmployees.getField("fname").setString("Bill");
rstEmployees.getField("lname").setString("Sornsin");
// Show contents of buffer and get user input.
strMessage = "AddNew in progress : " + "\n" +
"\tData in Buffer = " +
rstEmployees.getField("emp_id").getString() +
" " + rstEmployees.getField("fname").getString() + " " +
rstEmployees.getField("lname").getString()+ "\n\n" +
"Use Update to save buffer to recordset?Enter (Y/N)";
System.out.println(strMessage);
if(in.readLine().trim().equalsIgnoreCase("Y"))
{
rstEmployees.update();
// Go to the new record and show the resulting data.
System.out.println("Data in recordset = " +
rstEmployees.getField("emp_id").getString()+
" " + rstEmployees.getField("fname").getString() +
" " + rstEmployees.getField("lname").getString() + "\n");
}
else
{
rstEmployees.cancelUpdate();
System.out.println("No new Record added.\n");
}
// Delete new data because this is a demonstration.
cnn1.execute(
"DELETE FROM employee WHERE emp_id='" + strEmpID +"'");
// Cleanup Objects before exit
rstEmployees.close();
System.out.println("Press <Enter> to continue..");
in.readLine();
}
catch(AdoException ae)
{
// Notify the user of any errors that result from ADO.
// As passing a recordset, check for null pointer first.
if(rstEmployees != null)
{
PrintProviderError(rstEmployees.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 (rstEmployees != null)
if (rstEmployees.getState() == 1)
rstEmployees.close();
}
}
// 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");
}
}
// EndUpdateJ