Developing Database Drivers for AOLserver -- Ns_PdDbGetRow

### Ns_PdDbGetRow

#### Overview

Send to client a row associated with the column count.

#### Syntax

        void Ns_PdDbGetRow(void *handle, char *columnCount);

#### Description

This function should retrieve from the DBMS the row associated with the columnCount column and send this data to the client. For example:

        if (status == DB_END_DATA) {
        	Ns_PdSendData(END_DATA, strlen(END_DATA));
        } else {
        	Ns_PdSendRowInfo(rowInfo);
        }

If the get-row operation was successful, this function should call Ns_PdSendString with an OK_STATUS and then send the data with Ns_PdDbSendData. On failure, the function should use Ns_PdSendString to return an error.

#### Psuedo-code Example

        /* Things italicized would be your DBMS-specific structures and
    calls. */
        void
        Ns_PdDbGetRow(void *handle, char *columnCount) {
            DBMSState  *state = (DBMSState *) handle;
            Ns_PdRowInfo      *rowInfo;
            int                ncols;
            Ns_PdLog(Trace, "getrow(%s):", columnCount);
            ncols = atoi(columnCount);
            if ((rowInfo = Ns_PdNewRowInfo(ncols)) == NULL) {
                char            errbuf[ERRBUF_SIZE];
                sprintf(errbuf,
                    "DBMS proxy daemon could not allocate memory for
    row(%d)", ncols);
                Ns_PdSendString(errbuf);
            } else {
                int             status;
                Ns_PdSetRowInfoNumColumns(rowInfo, ncols);
                if ((status = DBMSGetRow(state, rowInfo)) == NS_ERROR) {
                    Ns_PdSendException(state->exceptionCode,
        state->exceptionMsg);
                } else {
                    Ns_PdSendString(OK_STATUS);
                    if (status == DB_END_DATA) {
                        Ns_PdSendData(END_DATA, strlen(END_DATA));
                    } else {
                        Ns_PdSendRowInfo(rowInfo);
                    }
                }
                Ns_PdFreeRowInfo(rowInfo, 0);
            }
        }

Top of Page
Copyright © 1998-99 America Online, Inc.