Получение массива байтов неизвестной длины от хранилища Java

Внешние ключи являются инструментом ссылочной целостности, не инструментом производительности. По крайней мере, в SQL Server, создание FK не создает связанный индекс, и необходимо создать индексы на всех полях FK для улучшения, ищут времена.

5
задан Cœur 29 July 2017 в 15:55
поделиться

1 ответ

Хорошо, я разобрался. Я запишу его здесь, чтобы другие также могли им воспользоваться.

Рассмотрим следующий метод Java, который возвращает массив байтов (просто фиктивный код, без проверок и т.д.)

public static byte[] GetData(){
    return myStore.getData();
}

, а на стороне C вы можете получить байт [] как следующий

    void get_data()
{       
    int len = 0;
    char* value = NULL;
    /*Consider j_class, and j_methodid are already initialized*/
    jbyteArray j_value = (*env)->CallStaticObjectMethod(env, j_class, j_methodid);

    if(j_value != NULL)
    {
        len = (*env)->GetArrayLength(env, j_value);
        value = (*env)->GetByteArrayElements(env, j_value, NULL);
    }

    /*later on release the resource*/
    (*env)->ReleaseByteArrayElements(env, j_value, value, 0);
}

Я проверил его, и он работает. Я собираюсь сейчас проверить это на двумерный массив. Я думаю, что это будет то же самое, только вы получите jobjectArray, а каждый элемент этого массива - jbyteArray.

12
ответ дан 18 December 2019 в 14:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: