2013-12-12 14 views
-1

SQLite的C接口庫我使用http://www.sqlite.org/c3ref/open.html作爲參考使用SQLite的下打開數據庫如何使用Android的

即時調用這樣

package com.example.offline; 

    public class NativeLib { 

    static { 
    System.loadLibrary("sqlite3"); 
    } 

    public native int sqlite3_open(String filename,Object sqlite3); 

    } 

由於文檔說

int sqlite3_open(
    const char *filename, /* Database filename (UTF-8) */ 
    sqlite3 **ppDb   /* OUT: SQLite db handle */ 
    ); 

logcat中的錯誤

12-12 14:49:15.645: W/dalvikvm(3265): No implementation found for native Lcom/example/offline/NativeLib;.sqlite3_open:(Ljava/lang/String;Ljava/lang/Object;)I 

所以我的問題是可以在我們我們的Java

這裏創建sqlite的C對象是我的Android.mk文件

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := sqlite3 
LOCAL_SRC_FILES := sqlite3.c 
include $(BUILD_SHARED_LIBRARY) 

感謝名單傢伙

+0

C接口將無法正常工作,甚至不會暴露方法。暴露的SQLite接口封裝在[SQLiteDatabase](http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html)中。 –

+0

你檢查了http://stackoverflow.com/questions/5523067/sqlite-with-android-ndk? –

+0

爲什麼日誌說沒有找到本地方法12-12 16:50:48.980:E/AndroidRuntime(2094):java.lang.UnsatisfiedLinkError:未找到本機方法:com.shabdkosh.offline.NativeLib.sqlite3_open:(Ljava/lang/String; Ljava/lang/Object;)I – Gattsu

回答

1

什麼是你的JNI方法?調用本地sqlite3_open(字符串文件名,Object sqlite3)找不到語言c sqlite3_open(const char * filename,sqlite3 ** ppDb)。

+0

你說沒有任何其他方式來調用sqlite3_open(常量字符*文件名,sqlite3 ** ppDb)。 – Gattsu

+0

你需要知道如何寫jni.it的不是很hard.search在谷歌和做到這一點,但寫jni的簡單方法,你可以使用swig。 – venciallee