1

在SQLlite/Android的添加UDF How to load extensions into SQLite?第一sqlite3_enable_load_extension必须完成从“未授权访问”我在myfunc.c添加用户自定义功能在sqlite的/ Android的

#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"); 
} 

的Java

确实防止
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调用永远不会回来,没有errorline它的工作原理。 有没有人有线索在这里出了什么问题?最好用代码示例。

回答

0

从Java你得到的SQLite数据库是用Android集成sqlite库创建/初始化。然后将它传递给jni代码,该代码与您的自定义sqlite库工作的版本不同,并且此db连接未使用它进行初始化。即使它起作用,您也可以在自定义sqlib上设置标志,但不能在Android集成库上设置标志。您必须一直使用自定义库,请按照此处的说明更改包装: http://www.sqlite.org/android/doc/trunk/www/index.wiki