Android Room — почему запрос выбора комнаты не работает через c ++?

Я создал базу данных через Room и дал путь разработчикам на C ++ через JNI. Все данные вставляются со стороны C ++ с помощью sqlppЗатем я выполняю SQL-запрос и не получаю свежие данные. Если я убью приложение и начну снова, SQL-запрос вернет все данные.

@Provides
@Singleton
LocalDatabase provideLocalDatabase(@DatabaseInfo String dbName, Context context) {
return Room.databaseBuilder(context, LocalDatabase.class, dbName)
.setJournalMode(RoomDatabase.JournalMode.WRITE_AHEAD_LOGGING)
.build();
}

MessageDao

@Dao
public abstract class MessageDao implements BaseDao<Message> {

@Query("SELECT * FROM messages")
public abstract Flowable<Message> getMessage();
}

Отправка пути базы данных в C ++

String uiDbPath = MyApp.applicationContext.getDatabasePath(AppConstants.DB_NAME).getAbsolutePath();
send_db_path_to_c_plus_plus(uiDbPath);

Мы используем режим JournalMode.WRITE_AHEAD_LOGGING, после вставки данных в базу данных я проверяю базу данных, чтобы убедиться, что все данные выходы. В результате я вижу все данные, но запрос на выбор не возвращается. Как я могу решить проблему, пожалуйста, помогите? Заранее спасибо.

РЕДАКТИРОВАТЬ 1 C ++ части

int64_t insert(manager::db::connection & conn, int64_t conv_id, int64_t author_id, const std::string & data)
{
auto conn_guard = manager::db::make_connection_guard(conn);
{
LOG_TRACE("db::insert(in_msg) - BEGIN conv_id={0} author_id={1}", conv_id, author_id);

const auto tab_in_msg = manager::db::tables::InMsgs{};

auto tx = start_transaction(conn_guard.native());
conn_guard.native()(insert_into(tab_in_msg).set(tab_in_msg.conversationId = conv_id, tab_in_msg.authorId = author_id, tab_in_msg.data = data));
int64_t rowid = conn_guard.native().last_insert_id();
tx.commit();

LOG_TRACE("db::insert(in_msg) - END rowid={0}", rowid);
return rowid;
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector