2011-03-30 20 views
13

Necesito una forma de instalar o acceder de alguna manera a sqlite3 en el shell adb. He rooteado mi dispositivo.Cómo instalar u obtener acceso a sqlite3 desde adb shell

He tratado de encontrar una respuesta, pero lo cerrado que podría venir es: Why do I get a "sqlite3: not found" error on a rooted Nexus One when I try to open a database using the adb shell?

Pero no creo que sea buena idea para empujar mis ventanas sqlite3.exe en un sistema Linux?

¿Es posible instalar el navegador de la terminal sqlite3 de alguna manera?

[Solución]

De los diferentes comentarios y algunos pidiendo alrededor en el # android-dev (IRC), he encontrado una solución. Primero copié el archivo de la base de datos a mi escritorio. Pero primero tuve que instalar BusyBox, porque cp no está incluido?!? Después de eso, corrí hacia el problema que no podía extraer o presionar desde cualquier lugar excepto/sdcard /. Entonces podría usar/sdcard/como una "estación intermedia" y tirar/pulsar mi DB.

¡Entonces me agotó! Realmente tenía que explorar mi terminal sqlite. Luego tuve la idea de que el emulador arrancara el binario sqlite de/system/xbin/sqlite3. A continuación, volver a montar/sistema con rw:

# mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 

y empuje SQLite a la/sdcard /, y desde allí copiarlo a/system/xbin/

Ahora funciona: D

+0

"Necesito una forma de instalar o de alguna manera tener acceso a sqlite3 en el shell adb" - ¿por qué? Si ha rooteado su dispositivo, simplemente descargue la base de datos y mírela con su "Windows sqlite3.exe" o un mejor cliente SQLite (por ejemplo, la extensión SQLite Manager para Firefox). ¿Qué estás ganando al tener 'sqlite3' en el dispositivo? – CommonsWare

+1

Si quiere jugar con el db de su aplicación, ¿por qué no sacar el db y manipularlo en su pc? – rajath

+0

¿Cómo uso mi navegador sqlite3 desde el shell adb? – DNRN

Respuesta

1

utilizo Rajath de técnica ... Adb "Extraiga" el db del emulador/dispositivo, trabaje en él, luego adb "empuje" de nuevo hacia/dentro del dispositivo emulador.

también: Uso el editor SQLite gratuito de Android Market. No he rooteado mi LG Ally y, por lo tanto, solo puedo editar las tablas de la base de datos en mi tarjeta sd con SQLite Editor.

Rajath sugiere usar el adb para empujar y extraer las bases de datos hacia y desde el emulador/dispositivo. El trabajo en la base de datos con el programa Windows (o lo que sea) sqlite3 que tenga. Él no sugiere empujar las ventanas sqlite3 en el dispositivo Android, en mi humilde opinión.

Noto que java/android "query()" envía comandos SQL reales programados directamente a los programas con la entrada del usuario. Concluyo que sqlite3 está en Android en alguna parte.

Cuando se utiliza el emulador, Dev Tools está disponible, y en la parte inferior de la lista se encuentra el emulador de terminal. Esto permite la exploración de la estructura de archivos de Android en el emulador. Sin embargo, el uso de "adb shell" desde la PC tiene permisos de root.

buena suerte. Mitch cactus

1

Usted puede hacer esto con adb shell sin problema.

En terminal o CMD (suponiendo que haya establecido la ruta ADB y su teléfono tiene RAÍZ) tipo:

  1. $ adb shell
  2. $ cd data/data/com.nameofyourpackage/databases/
  3. $ ls to find the name of your database
  4. $ sqlite3 nameofyourdb.db

Entonces puede usar .tables.schema para ver los datos que necesita para crear la consulta adecuada.

+0

Recibo un permiso denegado cuando estoy ejecutando el comando ls para encontrar la base de datos. Cual puede ser el problema ? –

+1

Tienes que estar en un emulador o rooteado. – Nick

+0

Sería bueno poder ejecutarlo desde el host. Por ejemplo: 'adb shell sqlite3 /data/data/com.android.providers.settings/databases/settings.db 'select * from" secure ";''. En mi caso, se apila, tengo que iniciar sesión en adb shell y ejecutarlo desde allí. – pevik

-1

No necesita root para extraer la base de datos de su dispositivo. Basta con ejecutar los siguientes comandos:

adb shell run-as <package-name> "cp databases/<db_name>.db /sdcard/ && exit" 
adb pull /sdcard/<db_name>.db ~/Downloads/ 

A partir de ahí, se puede utilizar sqlite3 para cualquier sistema operativo que está utilizando (http://www.sqlite.org/download.html), o un navegador sqlite como "Navegador DB para SQLite" (http://sqlitebrowser.org/)

Cuestiones relacionadas