I am working on an android project that I like to prevent users to get to content of my app database
If it is on the user's device, it is the user's database, not yours. It would only be your database if it is on your hardware.
My problem is I don't know which way is the best and how it works.
All are ineffective for trying to prevent the user from accessing the user's data.
Your database should be on internal storage, the default location for SQLite databases. Most users cannot access internal storage to get at the database. The only ones who can are the ones that root their devices. Anyone with the skills and interest to both root their device and try to get at the database in your app will have the skills and interest to either:
Reverse-engineer your app to find your encryption algorithm and key, or
Upload the database somewhere and convince somebody else to reverse-engineer your app to find your encryption algorithm and key
If you do not want the user to have access to the database, do not put it on their device. Access it via Web services from a server of yours.
Tools like SQLCipher for Android are for defending the user's data against attacks. They are not effective as a DRM solution.