extern "C" NS_EXPORT jobject JNICALL Java_org_mozilla_gecko_sqlite_SQLiteBridge_sqliteCall(JNIEnv* jenv, jclass, jstring jDb, jstring jQuery, jobjectArray jParams, jlongArray jQueryRes) { JNI_Setup(jenv); int rc; jobject jCursor = NULL; const char* dbPath; sqlite3 *db; char* errorMsg; dbPath = jenv->GetStringUTFChars(jDb, NULL); rc = f_sqlite3_open(dbPath, &db); jenv->ReleaseStringUTFChars(jDb, dbPath); if (rc != SQLITE_OK) { asprintf(&errorMsg, "Can't open database: %s\n", f_sqlite3_errmsg(db)); LOG("Error in SQLiteBridge: %s\n", errorMsg); JNI_Throw(jenv, "org/mozilla/gecko/sqlite/SQLiteBridgeException", errorMsg); free(errorMsg); } else { jCursor = sqliteInternalCall(jenv, db, jQuery, jParams, jQueryRes); } f_sqlite3_close(db); return jCursor; }
extern "C" NS_EXPORT jobject MOZ_JNICALL Java_org_mozilla_gecko_sqlite_SQLiteBridge_sqliteCall(JNIEnv* jenv, jclass, jstring jDb, jstring jQuery, jobjectArray jParams, jlongArray jQueryRes) { JNI_Setup(jenv); int rc; jobject jCursor = nullptr; const char* dbPath; sqlite3 *db; dbPath = jenv->GetStringUTFChars(jDb, nullptr); rc = f_sqlite3_open(dbPath, &db); jenv->ReleaseStringUTFChars(jDb, dbPath); if (rc != SQLITE_OK) { throwSqliteException(jenv, "Can't open database: %s", f_sqlite3_errmsg(db)); f_sqlite3_close(db); // close db even if open failed return nullptr; } jCursor = sqliteInternalCall(jenv, db, jQuery, jParams, jQueryRes); f_sqlite3_close(db); return jCursor; }
extern "C" NS_EXPORT jobject JNICALL Java_org_mozilla_gecko_sqlite_SQLiteBridge_sqliteCallWithDb(JNIEnv* jenv, jclass, jlong jDb, jstring jQuery, jobjectArray jParams, jlongArray jQueryRes) { JNI_Setup(jenv); jobject jCursor = NULL; sqlite3 *db = (sqlite3*)jDb; jCursor = sqliteInternalCall(jenv, db, jQuery, jParams, jQueryRes); return jCursor; }