Implementing onSend()
To insert data, implement the onSend() method:
 
virtual bool onSend(size_t rownum, void* theData,
size_t& byteLength, RWDBNullIndicator& ni, bool& lastPiece);
The parameters are:
rownum
The row for which data is needed (0-based indexing)

This parameter indicates the row of data being sent to the server.

For example, consider this code:

RWDBOSql inserter("insert into strings values(:ph0)");
MyDataCallback dataBuffer(1000);
inserter << dataBuffer;
inserter.execute(aConn);

When RWDBOSql::execute(..) is called, 1000 strings are inserted into the database by repeatedly calling the onSend() method associated with dataBuffer. For each row, the onSend() method is invoked as many times as needed until all the data is sent. The rownum indicates the row in the 1000 rows for which data is needed. Therefore, rownum will have values from 0 to 999.
theData
A pointer to the array where the onSend() method should write the data to be sent

This location is passed to onSend() by the access module, which has allocated a location to receive the data.
byteLength
The number of bytes in theData to be sent to the server

Initially this parameter holds the maximum size of the data that can be sent to the server, as specified by the piece size value for the access module. The onSend() method should set this variable to the actual size of the data being sent to the server.
ni
A boolean reference value for indicating nulls

This boolean value is set to true to indicate that a null value is being sent to the database, otherwise false.

If this parameter is set to true, the parameters theData, byteLength, and lastPiece are irrelevant.
lastPiece
A boolean reference value for indicating that this is the last piece of data for the current value

When the last piece of data for the current row's value is written by onSend() to the array theData, lastPiece must be set to true.
The onSend() method must return true to continue the operation. If it returns false, or throws an exception, the operation is terminated and no subsequent calls are made to onSend().