在 SQLlite/Android 中添加 UDF如何将扩展加载到 SQLite?首先必须执行 sqlite3_enable_load_extension 以防止我在 myfunc.c 中进行的“未经授权的访问”
#include <sqlite3.h>
#include <jni.h>
#include <stdlib.h>
jstring
Java_com_test_abc_SQLiteOpenHelper_enableExtension(JNIEnv* env, jobject thiz, sqlite3 *db)
{
sqlite3_enable_load_extension(db, 1); //errorline, without any infos
return (*env)->NewStringUTF(env, "enableExtension done");
}
爪哇
package com.test.abc;
....
public class MyOpenHelper extends SQLiteOpenHelper {
...
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
enableExtension(db);
}
public native String enableExtension(SQLiteDatabase db);
}
没有成功。从 Java 到 C 的 JNI 调用永远不会回来,没有错误行它可以工作。有谁知道这里出了什么问题?最好的代码示例。