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

SQL Anywhere 11.0.1 (中文) » UltraLite - C 及 C++ 编程 » API 参考 » UltraLite C/C++ 公共 API 参考

 

ULRegisterSQLPassthroughCallback

注册提供进行中状态的回调函数。

语法
void ULRegisterSQLPassthroughCallback (
    SQLCA * sqlca,
    ul_sql_passthrough_observer_fncallback,
    ul_void *   user_data
);
参数
  • sqlca   指向 SQL 通信区的指针。

    在 C++ API 中使用 Sqlca.GetCA 方法。

  • callback   回调函数的名称。

    回调值 UL_NULL 禁用任何以前注册的回调函数。

  • user_data   全局变量的一个替代,使任何上下文信息在全局范围内均可访问。这是必需的,因为您可以从应用程序中的任何位置调用回调函数。UltraLite 不修改提供的数据,它只是在回调函数被调用时将这些数据传递给回调函数。

    您可以声明任何数据类型,然后在回调函数中将其转换为正确的类型。例如,可以在回调函数中添加一行以下形式的代码:

    MyContextType * context = (MyContextType *) user_data;

示例

以下为示例回调函数以及调用 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 );
    ...
}