Android端sqlite以及mqtt client的使用

引言

昨天不是解决了个模拟器的问题么,今天在检查代码的时候,发现原来的代码里用到了sqlite,以前都是用sharepreference或者application来存储的,application的生命周期在程序启动时开始,在程序彻底销毁时销毁,sharepreference的生命周期开始于程序安装,启动,在程序卸载时销毁,类似于缓存一样的东西。那么好了,刚好来学习下这个sqlite吧。

sqlite是什么?

sqlite是一种轻量级的数据库,我的mac里自动装有sqlite,你可以使用命令行

sqlite3

如果出现下图的结果,则表示电脑里已经装有sqlite。他常用的命令和其他的数据库大同小异,只是语法稍微有些不同

.open :打开数据库文件(.db)
.databases:显示当前目录下的数据库
.tables:查看数据库下的表
.schema:查看表的视图

我把模拟器上的/data/data/<程序名称>/databases/msg.db拷贝到了本地目录下,进行一顿操作,结果如图

有个SQLScout的android studio插件,据说很好用,但是很可惜,要收费,还有一个工具,也是可以可视化,暂时还没尝试过,先上链接:
http://blog.csdn.net/logicteamleader/article/details/50975607
算了,反正我要在真机上测试,也没有root过,不能访问/data/下面的文件,所以就没再进行下去了,就当了解了解了。

sqlite在android上如何操作?

操作也是和其他数据库差不多的,也是写sql。Android提供了一个SQLiteOpenHelper类可以继承,可以单独弄个数据库操作类,可以重载他的oncreate方法进行创建table操作,也可自定义写一些方法,根据自己的需求。

需要注意的是,主要有两种执行方式,一种是db.execSQL(sql),这种主要针对于insert,update,delete操作;还有一种是db.rawQuery(sql,select[]),后面一项是筛选的条件,如果写在了sql里面的话,就写个null好了。还有一个是cursor的用法
cursor = db.rawQuery(sql, null);
if(cursor!=null&&cursor.moveToFirst()) {
Log.e(“++++ID+++”, id + “count:” + cursor.getColumnCount());
id = cursor.getInt(0);
}

MQTT协议

这个直接引用书籍了

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输),是IBM公司开发的一个轻量级的消息传输协议,跟XMPP协议类似,也是基于发布订阅模式实现的即时消息通信,不同的是MQTT协议针对低带宽网络、低计算能力设备等做了特殊的优化,他的设计思想是开源,可靠和简单。

客户端与服务端的选取

客户端选用了MQTT-client,服务端选择了apollo,客户端就不介绍了,主要介绍下apache apollo的安装与部署
下载地址:http://activemq.apache.org/apollo/download.html
选择linux版本的,下载,然后tar -zxvf apache-apollo-1.7.1-unix-distro.tar.gz进行解压
然后,选择一个目录,一般是/var/lib,输入${APOLLO_HOME}/bin/apollo create mybroker
这里的${APOLLO_HOME}需要在系统的/.bash_profile里面配置
之后,可以vi mybroker/etc/apollo.xml,进行查看设置,如图

如图所示,他的web端口是61680和61681,然后tcp端口是61613,用户名admin,密码password等等
之后我们将其run起来,“/Users/saintyun/mybroker/bin/apollo-broker” run
然后打开localhost:61680,登陆后,显示如图,有apollo连接数,连接机器ip以及topic主题,以及message

好吧,可以愉快的测试了~~~