SQLite3:未找到

25

我正在尝试按照此处描述的步骤访问我的设备上的SQLite数据库:如何查看SQLite数据库(无模拟器)?

然而,我一直得到sqlite3未找到的错误。 我假设我应该在输入命令时在行首加上井号(#)符号。 我试着这么做了,但没有任何反应。 如果不加井号,我就会收到错误消息。

sqlite3.exe文件肯定存在且在路径中。

我需要安装其他软件吗?


此页面上的第二个答案对我有用。 - Joe
3个回答

36
一些制造商会在设备上没有安装sqlite。如果设备有arm处理器,您可以从模拟器中复制sqlite程序到设备上。
  1. 启动模拟器并使用android-sdk中的platform-tools中的adb命令

    adb pull /system/xbin/sqlite3

  2. 按照此教程挂载设备的系统分区为读写:

    http://android-tricks.blogspot.com/2009/01/mount-filesystem-read-write.html

  3. 使用adb命令将sqlite3文件复制到设备上

    adb push sqlite3 /system/xbin/

设备重启后,sqlite3命令应该能够正常工作。 编辑(从链接页面复制 - 如果链接失效)。第2步的说明如下:
adb shell
su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system

"将/dev/block/mtdblock3和/system替换为相应的设备路径和挂载点,这些可从cat /proc/mounts获取。"

请确保在执行adb pull命令时,物理设备连接且模拟器正在运行! - Dyonisos
1
我还是做错了什么。我执行了cat /proc/mounts命令,并从"/dev/block/stl9 /system"这一行中获取了值。然后我输入了"mount -o remount,rw -t yaffs2 /dev/block/st19 /system"。现在我该如何复制呢?我尝试在adb shell中进行复制,但它不接受该命令。当我退出shell并重新输入命令时,它声称是只读的。 - theblitz
1
好的。所以我成功推送到/mnt/sdcard。现在当我进入adb shell并尝试输入"su"命令时,它无法识别该命令。 - theblitz
重启您的设备之后,sqlite3命令应该能够工作,这是非常重要的线索。 - ceph3us
另外,我没有从模拟器中获取sqlite,而是安装了Titanium Backup,它有sqlite。所以我只需执行cp /data/data/com.keramidas.TitaniumBackup/files/sqlite3 /system/xbin/来将其复制过去。 - Chris
显示剩余6条评论

7
  1. 打开Play商店 --> 搜索 Titanium Backup 并安装它
  2. adb shell
  3. su
  4. cp /data/data/com.keramidas.TitaniumBackup/files/sqlite3 /system/xbin/
  5. cd /system/xbin/
  6. chmod 755 sqlite3
  7. adbd reboot (以防万一)
  8. 享受结果

0

对于那些和我一样无法使用Sqlite3的人,我使用了一个解决方法:

cat srcfile> / mnt / sdcard / dstfile

通过这个,你可以将文件放入外部的.db管理器中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接