lua对接bmob数据库

学习的最终结果:

  1. 实现用户注册和登录
  2. 数据库增删改查
  3. 远程公告
  4. 远程更新版本
  5. 微信反馈
  6. 甚至自己做一个聊天室服务器,等等。。。
  7. 最后送大家的彩蛋—–超级无敌微信反馈(文末)

备注

新手一个,一夜基本学会lua,因为以前玩python 两者很像。很早以前我推送都是用自己的博客,虽然也很方便,总感觉很low,就一直想对接数据库。我做的这个软件是辅助我们大学校园网登陆的,很多同学在用,感觉初学lua的同学没有人会用这类的软件,所以整个包就不放出来了。


软件安装包

https://fir.im/4wgz
你们不是我学校的核心功能是用不了的,不过可以看看功能。



准备


准备安卓lua解释器可以使用酷安上的所有lua编程软件,想自己做UI就用基础的软件,不想自己做UI就用FusionApp来做

开始


注册bmob数据库新建一个应用和数据库
我把它起名lua其中一个表为(tuisong)推送



包含以下值

on_off 类型Boolean —开启公告标志位
gx_url 类型String —更新软件链接
gx_gg 类型String —更新公告
gg 类型String —公告
bb 类型String —版本号


下面开始教程
首先将bmob.lua放入工程根目录。
最好使用我修改和备注过的。


bmob教程文档

b=bmob(id,key)
id 用户id,key 应用key。b:insert(key,data,callback)
新建数据表,key 表名称,data 数据,callback 回调函数。b:update(key,id,data,callback)
更新数据表,key 表名称id 数据id,data 数据,callback 回调函数。b:query(key,data,callback)
查询数据表,key 表名称,data 查询规则,callback 回调函数。b:increment(key,id,k,v,c)
原子计数,key 表名称,id 数据id,k 数据key,v 计数增加量。b:delete(key,id,callback)
删除数据,key 表名称,id 数据id,callback 回调函数。b:sign(user,pass,mail,callback)
注册用户,user 用户名,pass 密码,mail 电子邮箱,callback 回调函数。b:login(user or mail,pass,callback)
登录用户,user 用户名,pass 密码,mail 电子邮箱,callback 回调函数。b:upload(path,callback)
上传文件,path 文件路径,callback 回调函数。b:remove(url,callback)
删除文件,url 文件路径,callback 回调函数。注:
1,查询规则支持表或者json格式,具体用法参考官方api
2,回调函数的第一个参数为状态码,-1 出错,其他状态码参考http状态码,第二个参数为返回内容。

远程更新

在程序启动时添加更新检测函数:

import "bmob"
当前版本 = "2.0"
function 检查更新()local b=bmob("你的appid","你的apikey")b:query("tuisong",function(code,json)if code~=-1 and code>=200 and code<400 then--print(dump(json))if (json.results[1].bb>当前版本)then--判断远程的版本是否大于软件内部的版本,大于则进行更新对话框().设置标题("版本更新")--显示更新公告.设置消息(json.results[1].gx_gg).设置积极按钮("下载更新",function()--进入下载链接加载网页(json.results[1].gx_url)end).设置消极按钮("取消").显示()endendend)
end

公告

在程序启动时添加远程公告函数
利用数据查询函数进行查询并弹窗


 b:query("tuisong",function(code,json)if code~=-1 and code>=200 and code<400 then--print(dump(json))if(json.results[1].on_off== true) then--这里是公告标志位,如果是false则不开启远程公告,如果是true则开启远程公告local gg =json.results[1].gg--这里就对应了我的网络端数据里面的gg(公告内容)对话框().设置标题("数据库远程公告").设置消息(gg).设置积极按钮("确定",function()显示消息("点击了确定")end).设置消极按钮("取消").显示()endendend)

其他远程推送功能

比如添加一个免责声明的按钮
同理也可以做一个关于作者的按钮、等等
这都是可以远程控制的
利用数据库查询与显示就可以实现远程控制弹窗的内容
进入按钮的单击事件


效果图


再添加几个数据点包括about_app(关于软件) 和 mzsm(免责声明) 等


b:query("tuisong",function(code,json)if code~=-1 and code>=200 and code<400 then--print(dump(json))mzsm = json.results[1].mzsm--在数据库里加一个字“mzsm”即可,原理和公告一样对话框().设置标题("免责声明").设置消息(mzsm).设置积极按钮("确定",function()end).设置消极按钮("取消").显示()-- print(type(mzsm))end
end)

注册和登录功能

看到这里应该都会用bmob了吧,代码我也注释的很详细。欢迎反馈;
下面是我的软件同学在使用过程中,我获取到的他们的账号和密码以及ip地址(并不是盗号,嘻嘻,只是想统计有多少人在用。。。。。。)



最后的彩蛋-微信反馈

这是一位大神做的接口可以直接将消息推送到微信,我之前用单片机做过消息的反馈。使用很简单只需要用get 发送就可以了。几行代码就可以实现。


效果如图


软件端

微信端


使用方法

相当的简单,进入网站微信登陆


然后会生成一个key,点击发送消息来测试一下:如图

网站端


微信端


  • 测试成功,下面应用到lua中。
  • -

--输入对话框
InputLayout={LinearLayout;orientation="vertical";Focusable=true,FocusableInTouchMode=true,{TextView;id="Prompt",textSize="15sp",layout_marginTop="10dp";layout_marginLeft="3dp",layout_width="80%w";layout_gravity="center",text="BUG提交将推送至我的微信";};{EditText;hint="输入反馈";layout_marginTop="5dp";layout_width="80%w";layout_gravity="center",id="edit";};
};AlertDialog.Builder(this)
.setTitle("BUG提交")
.setView(loadlayout(InputLayout))
.setPositiveButton("确定",{onClick=function(v) local zh=io.open("/sdcard/校网助手/账户.txt"):read("*a")local z=zh:match("(.+)@")local m=edit.Textlocal time=os.date("%Y-%m-%d %H:%M:%S")local ww="https://sc.ftqq.com/SCU26231T3d328e换成你的5e619d412b2937b0e5af42e7d782a3.send?text="local x="主人校网助手有人反馈bug了账号:"local g="信息为:"local k="&desp="local wx=ww..x..z..k..time..g..mlocal sj=math.random(1000,9999)local wxs =ww..sj..z..m--print(wx)Http.get(wx,nil,"utf8",nil,function(code,content,cookie,header)if(code==200 and content)thenprint("发送成功,谢谢")elseprint("与后台通信异常…尝试第二套方案"..code)Http.get(wxs,nil,"utf8",nil,function(code,content,cookie,header)if(code==200 and content)thenprint("发送成功,谢谢")endend)endend)end})
.setNegativeButton("取消",nil)
.show()
import "android.view.View$OnFocusChangeListener"
edit.setOnFocusChangeListener(OnFocusChangeListener{ onFocusChange=function(v,hasFocus)if hasFocus thenPrompt.setTextColor(0xFD009688)endend})

lua对接bmob数据库相关推荐

  1. php环境搭建sqlserver,ThinkPHP5.0/5.1对接SQLServer数据库(宝塔环境)

    SQLServer实际上是mssql,想要使用thinkphp的Db对象操作数据库前必须要在服务器上安装对应的扩展. 宝塔面板的PHP安装路径为/www/server/php/ 且支持多个PHP版本共 ...

  2. 小程序开发初体验,从静态demo到接入Bmob数据库完全实现

    之前我胖汾公司年会.问我能不能帮忙搞个小程序方便他们进行游戏后的惩罚/抽奖使用.出了个简单的设计图.大概三天左右做了个简单的小程序.目前提交审核了.对于写过一小段时间vue来说小程序很容易上手.写法和 ...

  3. Lua 操作 MongoDB 数据库实例

    最近有个工作是使用Nginx + Lua实现一个操作MongoDB数据库的API,主要实现其count和query功能.之前没有写过Lua,于是也就勉强着上手,在cloudwu的 lua-mongo ...

  4. lua连接mysql数据库

    环境配置 1.安装好lua,我的版本是5.4 2.下载mysql的c开发库 3.下载luarocks用于安装luasocket包和luasql-mysql包 4.配置一个本地或者远程的mysql服务器 ...

  5. lua连接 oracle 数据库,关于lua操作oracle数据库问题总结

    近期由于工作的需要,需要把现在程序进行优化,考虑到每个地区一个版本,维护的成本太大,难度太高,决定用存储过程或是脚本语言把各地区和业务相当的代码封装起来,这样,各个地区只需要修改各地的存储过程或是脚本 ...

  6. lua脚本操作数据库实现

    安装redis集群 安装jwt解析依赖库 安装openrestry lua脚本很多的话不便于管理 1.编写lua脚本 在/usr/local/openresty/lua 中编写lua脚本,实现对数据库 ...

  7. mysql数据给mes_PLC通讯智能网关:MES服务对接,SQL数据库双向通讯,HTTP协议GET/POST请求,MQTT协议JSON发布/订阅...

    常用的PLC型号系列:相关软件手册等资料下载 ◆ FX: 三菱FX 系列PLC ◆ QL: 三菱Q/L/R 系列PLC ◆ AS: 三菱A 系列PLC ◆ OM: 欧姆龙全系列PLC ◆ S72S:  ...

  8. 三菱FX5U、Q系列、L系列PLC对接MES数据库,实现双向通讯

    IGT-SER智能网关模块,支持各种PLC.智能仪表.远程IO与数据库之间双向通讯,既可以读取设备的数据上报到SQL数据库,也可以从数据库查询数据后写入到设备:PLC内无需编写通讯程序:支持局域网和外 ...

  9. mysql和ad的对接_对接mysql数据库遇见的一些问题

    环境:asp.net mvc 用MySql.Data查询别人家的库 1.mysql数据库中保存的日期,可以是int类型,叫什么什么时间戳,我也不知道为什么保存成这种格式 为了转换成DateTime格式 ...

最新文章

  1. 对于PS和flash协作做过光字的一点心得
  2. docker 使用python 镜像运行python脚本
  3. Okhttp3中设置超时的方法
  4. malloc,colloc,realloc内存分配,动态库,静态库的生成与调用
  5. PHP获取文件的绝对路径
  6. log4j配置_是时候了解一下log4j2各种配置的含义了!
  7. libevent项目分析(一) -- 准备阶段
  8. 前一天日期软件测试需求,软件测试实验日期前一天.doc
  9. PTA c语言 选择法排序过程
  10. mysql+安全性语言实验,实验四--数据库的安全性、完整性控制
  11. RocketMQ源码分析之从官方示例窥探:RocketMQ事务消息实现基本思想
  12. window下Jekyll+github搭建自己的博客
  13. pt-slot.php,Pwn In Kernel(一):基础知识
  14. java 数据流 中文_【Java I/O流】File、字符集、字节流、字符流、缓冲流、数据流、对象流、序列化、try-wi...
  15. arm-none-linux-gnueabi-gcc:未找到命令,arm-none-linux-gnueabi-gcc编译标准库引用
  16. 独家 | 利用滴滴出行数据透视中国城市空间发展(附视频PPT)
  17. Flutter 分享功能之Share
  18. 2018年湘潭大学程序设计竞赛 E 吃货
  19. 从零开始学Python【23】--线性回归诊断(第二部分)
  20. 储存器的区别之——RAM、ROM、FLASH

热门文章

  1. git pull出现“fatal: refusing to merge unrelated histories“
  2. 记一个npm安装问题 Refusing to delete xxx\.bin\xxx.cmd: is outside xxx\webpack and not a link
  3. Verilog 实现伪随机数生成器(线性反馈移位寄存器)
  4. 软考成绩什么时候出来?
  5. 4.7 设置单元格中文本的行间距 [原创Excel教程]
  6. Python 实验3 复杂数据类型
  7. python将图片生成视频,和空白视频
  8. 《三体》里的超级计算机,我们今天能造出来吗?
  9. 多线程&高并发(全网最新:面试题 + 导图 + 核心学习笔记)面试手稳心不慌,轻松拿下 offer,秋招跳槽必不可少的底层能力
  10. 小程序源码:全网独家小程序版本独立微信社群人脉系统社群空间站最新源码开源+详细教程