ALL,
I have an Eclipse Kepler where I am developing my Android application. This application uses SQLite for data persistence.
What I'd like to do is to see the database/tables/data inside Eclipse.Following this I opened installed the plugin, then opened File Explorer.
Problem is: trying to open /data is unsuccessful. It does not open.
Do I have to root the device to open this directory? I have LG phone with Android 2.2.
Permission sets for this folder is drwxrwx--x.
Thank you.
[EDIT]
I also tried to run the shell
igor#IgorReinCloud ~ $ android_sdk/platform-tools/adb -d shell
$ sqlite3 /data/data/com.radar.radar/databases/friends.db
sqlite3: permission denied
$
So it actually means that this is a permission issue and therefor I will not be able to see the db.
[/EDIT]
you can try
$ adb -d shell
$ run-as [your-package-name]
This should allow you to run commands as the user for that package. No guarantees though. Also, I've found that not all devices appear to have sqlite3 available through the shell.
Another possibility is to do the run-as command as above, then copy the database file to /sdcard, whcih is public. Then you can do adb pull /sdcard/[database-file]. Then you'll have the file on your local machine and can use sqlite3 there.
Using this simple library you can directly view your SQLlite datbase from your app . no need to extra .db file
https://github.com/sanathp/DatabaseManager_For_Android
Its a single java activity file ,just add the java file to your source folder you can view the tables in your app database , update ,delete, insert rows to you table .Everything from your app.
When the development is done remove the java file from your src folder thats it .
It helped me a lot .Hope it helps you too .
You can view the 1 minute demo here : http://youtu.be/P5vpaGoBlBY
Related
I created my first Android App with SQLite and tested it on my phone.
Now I installed an SQLiteManager on the phone and I would like to open the SQLitedatabse file.
The location is /data/user/0/com.<appname>/database/database.db
But this folder does not exist. How can I find and access the database file?
And I am also not able to find the apk of my App. In Android/data/ I can see all other installed apps, but not my own app.
How can I find yout where it is located?
The acutal path is /data/data/package.name/database.
If your app is in debug mode, most newer devices allow accessing this folder via Android Studio (or adb run-as). On the emulator this folder is public.
Just run the command in terminal
adb pull /data/data/com.example.myapplication/databases/your_db.db
No need to root your device.
I used this way on Mac with Terminal:
sudo adb -d shell "run-as com.YOUR_COMPANY.YOUR_APP_NAME cat databases/YOUR_DATABASE_NAME.db" > NEW_NAME_FOR_DATABASE.sqlite
Sometimes you need first to give that file a permission 666, so you can copy it to your computer.
chmod 666 YOUR_DATABASE_NAME.db
Your device must be Rootable for you to be able to see the .DB file
for the second question, try to search for your package name first. Maybe it's like xxx.xxx.Christina.xxx.AppName ?
I try to work with SQLite but I don't know what I'm doing wrong.
I've made an example to insert a records and it works but I can't see the database. I'm working with a real device.
I've found (in Internet) that the database should be in:
/data/data/paquete.java.de.la.aplicacion/databases/database
But this folder seems empty. I've tried with oi File Manager application and File Explorer of Eclipse.
On the other hand, I'm sure that the records have been inserted because if I debug, I can see the them in Log Cat.
Any ideas?
Thanks in advance.
As long as the application is built in debug mode there is no need to have the device rooted. Try
adb shell
run-as your.package.name
ls databases
In order to see the database files on a phone or through eclipse, your device needs to be rooted. If you want to test your database to see what it looks like and if it's working otherwise, you can run your app on the emulator and see it just fine.
What is rooting..?!
You need to be rooted to be able to see the database.
With the emulator you have root access and you can use sqlite3 to open the database from within an emulator shell. Use .dump to dump all contents of the database.
So the commands you would have to do:
Open shell on emulator:
adb shell
Within shell:
cd /data/data/paquete.java.de.la.aplicacion/databases/databases
sqlite3 *yourdatabase.db*
Within sqlite3
.dump
Mit .exit geht's wieder raus aus sqlite3.
i am trying to see SQLite database in anyway possible (I have a rooted device). I tried File explorer in eclipse but i cannot see anything under data folder. Can anybody please help me with this
I tried to search everywhere but couldnt find a clear solution.
I also tried adb shell but i cannot see list of things inside data folder using "ls" command.
error
Opendir failed. Permission denied
I am guessing this has something to do with rights but how can i fix it
Please help
You need root premission to explore DATA directory...
From phone
I use terminal emulator to do the job..... Simply open terminal then type in su after that it will ask for premision. then you need to type cd data/data/WhereEverYouNeedToGo/databases and "WhereEverYouNeedToGo" should be package name. After that you could do whatever you want with your database.
from PC
open terminal or cmd goto your adb directory then run adb shell then su and then
cd data/data/WhereEverYouNeedToGo/databases
Hope it helped.
Run adb in root mode using "adb root"
adb shell
su
ls /data/
Try this
You have been given a number of answers for how to leverage the root capability, however as android is designed without the assumption of root there are other methods as well which you can use while developing apps.
1) Include functionality on an expert menu to copy the database to the sdcard; there is no file copy method in android java (and in most stock cases no 'cp' shell command), but you can find numerous answers here with a copy routine.
2) Make your apk debuggable and use the run-as command to obtain a shell running as the application userid and starting in the app's data directory. You can then copy the database to the sdcard if the app has that permission.
3) Have your app set the permissions on the database file during development to world readable. Although you cannot browse the directory tree to down to it, you can then adb pull the database file by giving it's full path name.
You need to have either routed device or your device should be a "Android Dev Phone" to explore that directory. Trying checking the same using emulator, you will be able to see the data folder contents.
I would like to edit my app's DB using the SQLite Browser. I'm able to edit the DB using the adb shell (sqlite3), but I would rather edit it using a GUI rather than a command line. How do I get the DB from the emulator to a local drive? As of now I've tried:
1) using the adb pull command to pull the database from the emulator to my local drive.
adb pull data/data/com.myapps.quiz c:/
This command executes correctly, but I'm not able to find the file or directory in the local drive I specified.
2) Used the DDMS Perspective to locate the file in the File Explorer, but every time I get into the data/data directory, I only see directories called "con". I even tried pulling the entire data/data directory, but I can't find the name of the package (com.myapps.quiz) where the database is stored.
What am I missing here? Any help you could provide would be most helpful!
Your database is secure to your package so you cannot get this directly.
I have a work around for this.
What I do is go to shell and run-as my package and copy the database to sdcard using cat
adb shell
run-as your.package.name
cd databases
cat your_database.db > /mnt/sdcard/your_database.db
And I pull the file from the sdcard using File Explorer
Are you sure you're connecting to the emulator instance in DDMS, and not an actual device? I have always been able to push and pull sqlite databases from the
data/data/com.my.package/databases/mydb.sqlite
directory, and I can't think of any setting that would override that. An alternative would be to root an actual phone and then you will be able to move anything from the phone to your computer.
Is there a way to directly inspect an SQLite3 database in Android via Eclipse or do I have to do this via the shell?
I don't know if you can inspect it from within eclipse but you can pull a copy of the database file from the DDMS perspective in the file explorer in folder
data->data->your.package.name->databases
which you can inspect with a free database manager such as sqlite studio
Unfortunately AFAIK you always have to use the shell currently. (Well, not quite. You can use DDMS in Eclipse to pull the database, but that's not much better than using the shell).
Basically you can either 1) pull the database file from the emulator / phone and then inspect it, or you can 2) manually run some SQL queries from inside the emulator/phone.
For 1, I would recommend creating a script. Here is simple example
$ cat android_pull_db
#!sh
adb shell "chmod 777 /data/data/com.mypackage/databases/store.db"
adb pull /data/data/com.mypackage/databases/store.db
$
To create your own, paste the lines from #!... down to adb pull ... into a text file, and save it somewhere. Modify the package location and database filename. Make it executable, and add it to your path.
For 2, just execute this:
$ adb shell
$ cd /data/data/com.yourpackage/databases
$ sqlite3 your-db-file.db
> .help
http://sqlitebrowser.sourceforge.net/index.html
This is a simple way of inspecting the contents of a database. Just use the DDMS to pull the database from the device and then open.
https://github.com/cattaka/TelnetSqlite/wiki
I made it this by following 3 step.
Embed a small program
Add code to kick the embedded program in the Application.onCreate() method
Execute the telnet and run SQL via small program
But it is not from Eclipse. It uses telnet or a sql editor named RdbAssistant.