Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » UltraLite - C- und C++-Programmierung » API-Referenz » UltraLite C/C++ - Gemeinsame API-Referenz

 

ULRegisterSQLPassthroughCallback

Registriert eine Callback-Funktion, die den Status des Verarbeitungsfortschritts angibt.

Syntax
void ULRegisterSQLPassthroughCallback (
    SQLCA * sqlca,
    ul_sql_passthrough_observer_fn callback,
    ul_void *   user_data
);
Parameter
  • sqlca   Ein Zeiger auf den SQL-Kommunikationsbereich (SQLCA-Bereich).

    Verwenden Sie in der C++-API die Methode Sqlca.GetCA.

  • callback   Der Name Ihrer Callback-Funktion.

    Ein Callback-Wert UL_NULL deaktiviert alle vorher registrierten Callback-Funktionen.

  • user_data   Eine Alternative zu globalen Variablen, um Kontextinformationen global verfügbar zu machen. Dies ist erforderlich, da Sie die Callback-Funktion von allen Positionen in Ihrer Anwendung aus aufrufen können. UltraLite ändert die übergebenen Daten nicht, sondern übergibt sie einfach an Ihre Callback-Funktion, wenn diese aufgerufen wird.

    Sie können jeden beliebigen Datentyp deklarieren und in Ihrer Callback-Funktion in den richtigen Typ umwandeln. Sie können beispeilsweise eine Zeile der folgenden Art in Ihre Callback-Funktion aufnehmen:

    MyContextType * context = (MyContextType *) user_data;

Beispiel

Nachstehend finden Sie einen Callback-Beispielcode zum Aufruf von ULRegisterSQLPassthroughCallback:

static void UL_GENNED_FN_MOD passthroughCallback( ul_sql_passthrough_status * status ) {
    switch( status->state ) {
        case UL_SQL_PASSTHROUGH_STATE_STARTING:
            printf( "SQL Passthrough script execution starting\n" );
            break;
        case UL_SQL_PASSTHROUGH_STATE_RUNNING_SCRIPT:
            printf( "Executing script %d of %d\n", status->cur_script, status->script_count );
            break;
        case UL_SQL_PASSTHROUGH_STATE_DONE:
            printf( "Finished executing SQL Passthrough scripts\n" );
            break;
        default:
            printf( "SQL Passthrough script execution has failed\n" );
            break;
    }
}

int main() {
    ULSqlca sqlca;

    sqlca.Initialize();
    ULRegisterSQLPassthroughCallback( sqlca.GetCA(), passthroughCallback, NULL );
    DatabaseManager * dm = ULInitDatabaseManager( sqlca );
    ...
}