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
In diesem Beispiel werden die Methoden AppendChunk und GetChunk verwendet, um ein Bildfeld mit Daten aus einem anderen Datensatz zu füllen.
// BeginAppendChunkJ
import com.ms.wfc.data.*;
import java.io.*;
import com.ms.com.*;
import java.util.*;
public class AppendChunkX
{
// The main entry point for the application.
public static void main (String[] args)
{
AppendChunkX();
System.exit(0);
}
// AppendChunkX function
static void AppendChunkX()
{
// Define ADO Objects.
Connection cnConn1 = null;
Recordset rstPubInfo = null;
//Declarations.
String strCnn;
String strPubID;
String strPRInfo;
String strMessage = "";
long lngOffset = 0;
long lngLogoSize;
final int conChunkSize = 100;
byte[] varChunk = new byte[conChunkSize];
int intCommand = 0 ;
int intMulChunkSize,intLastChunkSize;
Vector varLogo = new Vector();
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
String line = null;
int noOfRecords;
int noOfRecordesDisplayed = 5;
int recordCount = 0;
String info;
int indexOfComma ;
try
{
// Open a connection.
strCnn = "Provider='sqloledb';Data Source='MySqlServer';"
+ "Initial Catalog='Pubs';Integrated Security='SSPI';";
cnConn1 = new Connection();
cnConn1.open(strCnn,"","",AdoEnums.CommandType.UNSPECIFIED);
// Open the pub_info Table.
rstPubInfo = new Recordset();
rstPubInfo.setCursorType(AdoEnums.CursorType.KEYSET );
rstPubInfo.setLockType(AdoEnums.LockType.OPTIMISTIC );
rstPubInfo.open("pub_info", cnConn1,AdoEnums.CursorType.KEYSET ,
AdoEnums.LockType.OPTIMISTIC, AdoEnums.CommandType.TABLE );
System.out.println ("Available logos are : \n");
noOfRecords = rstPubInfo.getRecordCount();
// Prompt for the Logo to copy.
for ( int i = 0; i < noOfRecords; i++)
{
recordCount++;
strMessage = strMessage +
rstPubInfo.getField("pub_id").getString() + "\n";
indexOfComma =
rstPubInfo.getField("pr_info").getString().indexOf(",");
info =
rstPubInfo.getField("pr_info").getString().substring(0,
indexOfComma );
strMessage = strMessage + info + "\n\n";
// Display five records at a time.
if ( recordCount == noOfRecordesDisplayed)
{
System.out.println(strMessage);
System.out.println("\n\nPress <Enter> to continue..");
line = in.readLine();
strMessage = "";
recordCount = 0;
}
rstPubInfo.moveNext();
// Display last records and exit if last record.
if(rstPubInfo.getEOF())
{
System.out.println(strMessage);
break;
}
}
System.out.println ("\nEnter the ID of a logo to copy :\n" );
strPubID = in.readLine();
// Copy the logo to a variable in chunks.
rstPubInfo.setFilter("pub_id = '" + strPubID + "'");
lngLogoSize = rstPubInfo.getField("logo").getActualSize();
while (lngOffset < lngLogoSize)
{
varChunk = rstPubInfo.getField("logo")
.getByteChunk(conChunkSize);
int i = 0;
while (i < conChunkSize && varLogo.size() < (int)lngLogoSize)
{
varLogo.addElement(new Byte(varChunk[i]));
i++;
}
lngOffset = lngOffset + conChunkSize ;
}
//Get the data for New ID from the user.
System.out.println
("\nEnter a new pub ID [must be > 9899 & < 9999]:");
strPubID = in.readLine().trim();
System.out.println ("\nEnter descriptive text :");
strPRInfo = in.readLine().trim();
//Temporarily add new publisher to publishers table to
//avoid getting error foreign key constraint.
cnConn1.execute("INSERT publishers(pub_id) VALUES('" +
strPubID + "')");
//Add a new record.
rstPubInfo.addNew();
rstPubInfo.getField("pub_id").setString(strPubID);
rstPubInfo.getField("pr_info").setString(strPRInfo);
//Copy the selected logo to the new logo in chunks.
lngOffset = 0;
//Divide logosize in multiples of constant chunk size.
intMulChunkSize =
(varLogo.size()/conChunkSize) * conChunkSize;
intLastChunkSize = varLogo.size()- intMulChunkSize ;
byte[] arrChunk = new byte[conChunkSize];
byte[] lastChunk = new byte[intLastChunkSize];
while ( lngOffset < varLogo.size () )
{
int ii = 0 ;
// Copy the logo in constant chunk size.
if ( (int)lngOffset < intMulChunkSize)
{
while (ii < conChunkSize &&
(int)lngOffset < varLogo.size () )
{
arrChunk[ii] =
((Byte)varLogo.elementAt
((int)lngOffset)).byteValue();
ii++;
lngOffset++;
}
rstPubInfo.getField("logo").appendChunk(arrChunk);
}
// Copy the last remaining chunk.
else
{
while (ii < intLastChunkSize &&
(int)lngOffset < varLogo.size () )
{
lastChunk[ii] =
((Byte)varLogo.elementAt
((int)lngOffset)).byteValue();
ii++;
lngOffset++;
}
rstPubInfo.getField("logo").appendChunk(lastChunk);
}
}
// Update the new recordset with new logo.
rstPubInfo.update();
//Show the newly added data.
System.out.println ("\nNew Record : " +
rstPubInfo.getField("pub_id").getString() + "\n");
System.out.println ("Description : " +
rstPubInfo.getField("pr_info").getString() + "\n");
System.out.println ("Logo Size : " +
rstPubInfo.getField("logo").getActualSize() );
System.out.println ("\n\nPress <Enter> key to continue.");
in.readLine();
//Delete new records because this is a demonstration.
rstPubInfo.requery();
cnConn1.execute("DELETE FROM pub_info WHERE pub_id = '" +
strPubID + "'");
cnConn1.execute("DELETE FROM publishers WHERE pub_id = '" +
strPubID + "'");
}
catch( AdoException ae )
{
// Notify user of any errors that result from ADO.
// Check for null pointer for connection object.
if(rstPubInfo.getActiveConnection()==null)
System.out.println("Exception: " + ae.getMessage());
// As passing a Recordset, check for null pointer first.
if (rstPubInfo != null)
{
PrintProviderError(rstPubInfo.getActiveConnection());
PrintADOError(ae);
}
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 (rstPubInfo != null)
if (rstPubInfo.getState() == 1)
rstPubInfo.close();
if (cnConn1 != null)
if (cnConn1.getState() == 1)
cnConn1.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("\tSource = " + je.getClass() + "\n");
System.out.println("\tDescription = " + je.getMessage() + "\n");
}
// PrintADOError Function
static void PrintADOError(AdoException ae)
{
System.out.println("\t Error Source = " + ae.getSource() + "\n");
System.out.println("\t Description = " + ae.getMessage() + "\n");
}
}
// EndAppendChunkJ