【发布时间】:2014-03-09 09:55:54
【问题描述】:
我需要在 Android 中使用 ndk 从 C++ 层进行数据库操作。
但是在使用 sqlite3_open 打开数据库时,我收到“无法打开数据库文件”错误。
我正在使用 Java 获取数据库路径:
String sqliteDir = getApplicationContext().getDatabasePath("MyDb").getPath();
C++ 代码:
int rc = sqlite3_open(dbPath, _db);
if(rc != SQLITE3_OK) LOGD("Can't open database: %s with path %s\n", KSqlite3::sqlite3_errmsg(_db), dbPath);
else LOGD(" Opened database successfully %s \n", sqlite3_errmsg(_db));
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := myMod
LOCAL_SRC_FILES := myMod.cpp sqlite3.c
LOCAL_LDLIBS := -llog
#Includes various C++ libraries
include $(BUILD_SHARED_LIBRARY)
错误信息: 无法打开数据库:无法打开路径为/data/data/com.packageName/databases/MyDb的数据库文件
【问题讨论】:
-
路径真的缺少初始的
/吗? -
RSSFeed 是从哪里来的?
-
已编辑正确的错误消息
-
检查
com.packageName/databases/是否存在。如果它不存在,我认为getDatabasePath()不会创建它。 -
是的,这是唯一的问题。谢谢!!!
标签: c++ sqlite android-ndk