跟着郭霖大神的《第一行代码Android》学到第六章数据存储全方案——详解持久化技术的6.4SQLite数据库存储时,将ADB的路径存在path中,在cmd中输入adb shell,没有正常启动adb而是报了如下的错误:
adb server is out of date. killing...
ADB server didn't ACK
* failed to start daemon *
error:
遂进行搜索得:
https://blog.csdn.net/heb_feng/article/details/12612133
https://blog.csdn.net/jack_pengpeng/article/details/48895197
参考这两个前辈的解决方案后,以为是adb端口5037被占用的问题,但打开了任务管理器之后,发现三个adb.exe都来自C:\Users\whitedragon\AppData\Local\Android\sdk\platform-tools文件夹,是由Genymotion启动的,而不是网上说的腾讯/豌豆荚之类的程序。
杀掉进程以后,adb.exe仍然无限自启,解决不了问题。
使用cd 的方法进入C:\Users\whitedragon\AppData\Local\Android\sdk\platform-tools,adb.shell成功
尝试使用cd方法打开目录:"cd /data/data/com.example.databasetest/databases",提示no such file or directory
搜索无果,一步步排查
参考:https://blog.csdn.net/guolin_blog/article/details/38461239
cd /data/data可以打开
cd /data/data/com.example.databasetest无法打开
输入ls查看data/data下的文件列表:
发现几个与example相关的app都命名为com.example.whitedragon.XXX(注:whitedragon为我的windows账户名)
于是打开到
/data/data/com.example.
whitedragon.databasetest/databases
输入ls查看databases下的表名
再根据书上的sqlite3,.table,.schema等方法即可完成数据表的查看。
看起来,通过迂回了一大圈,问题解决了。
但是既然adb能以这种方式正常运行,那一定是配置环境变量出了问题。
为了避免每次查看都需要从印象笔记把路径粘贴上去的麻烦,我继续寻找答案。
查了下环境变量和Path的定义,突发奇想:
是不是Path对输入框中地址的填写顺序有要求,如果将adb路径添加到句末,就会造成先前配置java环境中的adb先行启动?
于是,我把adb路径改到了最左边,C:;之后,配置java的句子之前,再启动cmd,直接输入adb shell,正常启动,问题解决了。。。
我对环境变量的理解可能还有问题,但问题解决了就不想再去费心思了,欢迎指正!
sqlite> select * from book
...>
补充一句,如果在之后用select * from book查询数据表过程中出现了问题,即如上图所示的代码,请按此方式解决:
1.确定表名是“book”还是“Book”
2.在句子末尾加分号。。。
成功运行 结果如下:
参考链接:https://www.zhihu.com/question/46737546?from=profile_question_card