⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jnicli.cpp

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 CPP
📖 第 1 页 / 共 3 页
字号:
}

jintArray JNICALL jniGetIntArray(JNIEnv* env, jclass, jlong cursor)
{
    return ((JniResultSet*)cursor)->nextIntArray(env);
}

jlongArray JNICALL jniGetLongArray(JNIEnv* env, jclass, jlong cursor)
{
    return ((JniResultSet*)cursor)->nextLongArray(env);
}

jfloatArray JNICALL jniGetFloatArray(JNIEnv* env, jclass, jlong cursor)
{
    return ((JniResultSet*)cursor)->nextFloatArray(env);
}

jdoubleArray JNICALL jniGetDoubleArray(JNIEnv* env, jclass, jlong cursor)
{
    return ((JniResultSet*)cursor)->nextDoubleArray(env);
}

jobjectArray JNICALL jniGetStringArray(JNIEnv* env, jclass, jlong cursor)
{
    return ((JniResultSet*)cursor)->nextStringArray(env);
}

jint JNICALL    jniGetNumberOfSelectedRecords(JNIEnv* env, jclass, long cursor)
{
    return ((JniResultSet*)cursor)->size();
}

void jniCloseCursor(JNIEnv* env, jclass, jlong cursor)
{
    delete (JniResultSet*)cursor;
}

jlong JNICALL   jniInsert(JNIEnv* env, jclass, jlong db, jlong desc, jlong buf)
{
    return (jlong)((JniDatabase*)db)->insert((dbTableDescriptor*)desc, (ObjectBuffer*)buf);
}

void JNICALL   jniUpdate(JNIEnv* env, jclass, jlong db, jlong oid, jlong desc, jlong buf)
{
    ((JniDatabase*)db)->update((oid_t)oid, (dbTableDescriptor*)desc, (ObjectBuffer*)buf);
}

jlong JNICALL   jniSelect(JNIEnv* env, jclass, jlong db, jlong desc, jstring condition)
{
    char const* query = getStringBody(env, condition);
    JniResultSet* rs = ((JniDatabase*)db)->select((dbTableDescriptor*)desc, query);
    releaseStringBody(env, condition, query);
    return (jlong)rs;
}

jint JNICALL    jniDelete(JNIEnv* env, jclass, jlong db, jlong desc, jstring condition)
{
    char const* query = getStringBody(env, condition);
    int result = ((JniDatabase*)db)->remove((dbTableDescriptor*)desc, query);
    releaseStringBody(env, condition, query);
    return result;
}

void JNICALL    jniCommit(JNIEnv* env, jclass, jlong db)
{
    ((JniDatabase*)db)->commit();
}

void JNICALL    jniRollback(JNIEnv* env, jclass, jlong db)
{
    ((JniDatabase*)db)->rollback();
}

void JNICALL    jniLock(JNIEnv* env, jclass, jlong db)
{
    ((JniDatabase*)db)->lock();
}

void JNICALL    jniAttach(JNIEnv* env, jclass, jlong db)
{
    ((JniDatabase*)db)->attach();
}

void JNICALL    jniDetach(JNIEnv* env, jclass, jlong db, jint flags)
{
    ((JniDatabase*)db)->detach(flags);
}

void JNICALL    jniSetThreadContext(JNIEnv* env, jclass, jlong db, jlong ctx)
{
    ((JniDatabase*)db)->setThreadContext((dbDatabaseThreadContext*)ctx);
}

jlong JNICALL   jniGetThreadContext(JNIEnv* env, jclass, jlong db)
{
    return (jlong)((JniDatabase*)db)->getThreadContext();
}

jlong JNICALL   jniCreateTableDescriptor(JNIEnv* env, jclass, jlong db, jstring table, jobjectArray fields, jintArray types, jobjectArray referencedTables,  jobjectArray inverseFields, jintArray constraintMasks)
{
    return (jlong)((JniDatabase*)db)->createTableDescriptor(env, table, fields, types, referencedTables, inverseFields, constraintMasks);   
}

    
static JNINativeMethod fastdbApiMethods[] = 
{ 
    {    
        "jniOpen", 
        "(ILjava/lang/String;Ljava/lang/String;JI)J",
        (void*)&jniOpen
    }, 
    {    
        "jniClose", 
        "(J)V",
        (void*)&jniClose
    }, 
    {    
        "jniNextTable", 
        "(J)Ljava/lang/String;",
        (void*)&jniNextTable
    }, 
    {    
        "jniSetByte", 
        "(JB)V",
        (void*)&jniSetByte
    }, 
    {    
        "jniSetShort", 
        "(JS)V",
        (void*)&jniSetShort
    }, 
    {    
        "jniSetInt", 
        "(JI)V",
        (void*)&jniSetInt
    }, 
    {    
        "jniSetLong", 
        "(JJ)V",
        (void*)&jniSetLong
    }, 
    {    
        "jniSetString", 
        "(JLjava/lang/String;)V",
        (void*)&jniSetString
    }, 
    {    
        "jniSetBoolArray", 
        "(J[Z)V",
        (void*)&jniSetBoolArray
    }, 
    {    
        "jniSetCharArray", 
        "(J[C)V",
        (void*)&jniSetCharArray
    }, 
    {    
        "jniSetByteArray", 
        "(J[B)V",
        (void*)&jniSetByteArray
    }, 
    {    
        "jniSetShortArray", 
        "(J[S)V",
        (void*)&jniSetShortArray
    }, 
    {    
        "jniSetIntArray", 
        "(J[I)V",
        (void*)&jniSetIntArray
    }, 
    {    
        "jniSetLongArray", 
        "(J[J)V",
        (void*)&jniSetLongArray
    }, 
    {    
        "jniSetFloatArray", 
        "(J[F)V",
        (void*)&jniSetFloatArray
    }, 
    {    
        "jniSetDoubleArray", 
        "(J[D)V",
        (void*)&jniSetDoubleArray
    }, 
    {    
        "jniSetStringArray", 
        "(J[Ljava/lang/String;)V",
        (void*)&jniSetStringArray
    }, 
    {    
        "jniCreateBuffer", 
        "()J",
        (void*)&jniCreateBuffer
    }, 
    {    
        "jniCreateTable", 
        "(JLjava/lang/String;J)J",
        (void*)&jniCreateTable
    }, 
    {    
        "jniUpdateTable", 
        "(JLjava/lang/String;J)J",
        (void*)&jniUpdateTable
    }, 
    {    
        "jniNext", 
        "(J)J",
        (void*)&jniNext
    }, 
    {    
        "jniCloseCursor", 
        "(J)V",
        (void*)&jniCloseCursor
    }, 
    {    
        "jniGetByte", 
        "(J)B",
        (void*)&jniGetByte
    }, 
    {    
        "jniGetShort", 
        "(J)S",
        (void*)&jniGetShort
    }, 
    {    
        "jniGetInt", 
        "(J)I",
        (void*)&jniGetInt
    }, 
    {    
        "jniGetLong", 
        "(J)J",
        (void*)&jniGetLong
    }, 
    {    
        "jniGetString", 
        "(J)Ljava/lang/String;",
        (void*)&jniGetString
    }, 
    {    
        "jniGetBoolArray", 
        "(J)[Z",
        (void*)&jniGetBoolArray
    }, 
    {    
        "jniGetCharArray", 
        "(J)[C",
        (void*)&jniGetCharArray
    }, 
    {    
        "jniGetByteArray", 
        "(J)[B",
        (void*)&jniGetByteArray
    }, 
    {    
        "jniGetShortArray", 
        "(J)[S",
        (void*)&jniGetShortArray
    }, 
    {    
        "jniGetIntArray", 
        "(J)[I",
        (void*)&jniGetIntArray
    }, 
    {    
        "jniGetLongArray", 
        "(J)[J",
        (void*)&jniGetLongArray
    }, 
    {    
        "jniGetFloatArray", 
        "(J)[F",
        (void*)&jniGetFloatArray
    }, 
    {    
        "jniGetDoubleArray", 
        "(J)[D",
        (void*)&jniGetDoubleArray
    }, 
    {    
        "jniGetStringArray", 
        "(J)[Ljava/lang/String;",
        (void*)&jniGetStringArray
    },
    {    
        "jniInsert", 
        "(JJJ)J",
        (void*)&jniInsert
    }, 
    {    
        "jniUpdate", 
        "(JJJJ)V",
        (void*)&jniUpdate
    }, 
    {    
        "jniSelect", 
        "(JJLjava/lang/String;)J",
        (void*)&jniSelect
    }, 
    {    
        "jniGetNumberOfSelectedRecords", 
        "(J)I",
        (void*)&jniGetNumberOfSelectedRecords
    }, 
    {    
        "jniDelete", 
        "(JJLjava/lang/String;)I",
        (void*)&jniDelete
    }, 
    {    
        "jniCommit", 
        "(J)V",
        (void*)&jniCommit
    }, 
    {    
        "jniRollback", 
        "(J)V",
        (void*)&jniRollback
    }, 
    {    
        "jniLock", 
        "(J)V",
        (void*)&jniLock
    }, 
    {    
        "jniAttach", 
        "(J)V",
        (void*)&jniAttach
    }, 
    {    
        "jniDetach", 
        "(JI)V",
        (void*)&jniDetach
    }, 
    {    
        "jniGetThreadContext", 
        "(J)J",
        (void*)&jniGetThreadContext
    }, 
    {    
        "jniSetThreadContext", 
        "(JJ)V",
        (void*)&jniSetThreadContext
    }, 
    {    
        "jniCreateTableDescriptor", 
        "(JLjava/lang/String;[Ljava/lang/String;[I[Ljava/lang/String;[Ljava/lang/String;[I)J",
        (void*)&jniCreateTableDescriptor
    }
};

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *)
{
    JNIEnv *env;
    vm->GetEnv((void**)&env, JNI_VERSION_1_2);
    jclass cls = env->FindClass("jnicli/DatabaseJNI");
    if (cls == NULL) { 
        printf("Class jnicli/DatabaseJNI is not found\n");
    } else { 
        env->RegisterNatives(cls, fastdbApiMethods, itemsof(fastdbApiMethods));    
    }
    return JNI_VERSION_1_2;
}

JNIEXPORT void JNICALL JNI_OnUnload(JavaVM *vm, void *)
{
    JNIEnv *env;
    vm->GetEnv((void**)&env, JNI_VERSION_1_2);
    jclass cls = env->FindClass("jnicli/DatabaseJNI");
    env->UnregisterNatives(cls);
}






⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -