в моей работе Я пытаюсь сделать некоторые сравнения, и поэтому мне нужно иметь возможность писать в базу данных из NDK. Я пытался вдохновить от this source, но я получаю (от эмулятора и физического устройства) после ошибки при вставке:
файл шифруется или не является базой данныхAndroid NDK пишите SQLite
Моей соответствующей части коды:
extern "C"
{
JNIEXPORT jstring JNICALL Java_package_Benchmark_getMessage(JNIEnv *env, jobject thisObj, jstring filePath, jstring databasePath)
{
sqlite3 *db;
const char *database = env->GetStringUTFChars(databasePath, 0);
if (sqlite3_open_v2(database, &db, SQLITE_OPEN_READWRITE, NULL) == SQLITE_OK) // returns zero but probably sets db as read-only
{
if (SQLITE_OK != sqlite3_exec(db, "INSERT INTO lessons (wordCount, wordPassedCount, lessonName, selected) VALUES (0, 0, '50k', 0)", NULL, NULL, NULL))
LOGD("%s", sqlite3_errmsg(db)); // here i get the error
int lesson_id = sqlite3_last_insert_rowid(db);
return env->NewStringUTF("Database opened!!");
}
env->ReleaseStringUTFChars(databasePath, database);
}
}
Так что мой вопрос:
Могу ли я (и как) вставить в базу данных приложения (созданный Java API) от NDK?
В качестве обходного решения я предполагаю, что можно создать временную базу данных (не зашифрованную), но я скорее использую тот, который я создал заранее, JavaiteOpenHelper Java.
Начните с простого извлечения файла на компьютер. Если вы можете открыть его с помощью sqlite, вы сможете использовать http://blog.kdehairy.com/using-sqlite-natively-on-android/. Если файл зашифрован или поврежден, у вас возникла проблема. –
Я потянул его, и он отлично читается и доступен для записи. – Majkeee