App Inventor 2 网络微数据库(TinyWebDB)保姆级教程
本文从零开始讲解网络微数据库的用法,适合完全没有网络数据库经验的初学者。
一、为什么需要网络微数据库?
| 场景 | 本地微数据库 | 网络微数据库 |
|---|---|---|
| 数据只存本机 | ✅ 够用 | 不需要 |
| 多台手机共享数据 | ❌ 不支持 | ✅ 支持 |
| 多用户注册登录 | ❌ 不支持 | ✅ 支持 |
| 换手机数据不丢失 | ❌ 会丢失 | ✅ 不丢失 |
| 实时同步数据 | ❌ 不支持 | ✅ 支持 |
二、网络微数据库 vs 其他数据库方案
| 方案 | 难度 | 适用场景 |
|---|---|---|
| 网络微数据库(TinyWebDB) | ⭐ 最简单 | 小型数据,用户量少 |
| 云数据库(CloudDB) | ⭐⭐ | 需要实时推送 |
| Firebase | ⭐⭐⭐ | 需要科学上网 |
| LeanDB | ⭐⭐⭐ | 国内大型项目 |
| MySQL+PHP | ⭐⭐⭐⭐ | 自建服务器 |
三、网络微数据库核心概念
3.1 标签(Tag)和值(Value)
网络微数据库是一个**键值对(Key-Value)**存储系统:- 标签(Tag):相当于”钥匙”,用来找到对应的数据
- 值(Value):相当于”内容”,可以是文字、数字、列表、字典
3.2 ⚠️ 最重要:异步操作
网络微数据库和本地微数据库最大的区别:所有操作都是异步的!- 本地微数据库:存完立刻能读,同步操作
- 网络微数据库:存/读都需要等待网络响应,异步操作
你发了一条微信,不会傻等对方回复,而是继续做其他事。等对方回复了,手机会通知你。这就是异步。网络微数据库也一样:
- 调用”获取值”后,不会立刻得到结果
- 需要在**“已获得值时”事件**中处理结果
- 调用”存储值”后,不会立刻确认成功
- 需要在**“值存储完毕时”事件**中确认
四、核心方法和事件
4.1 方法
| 方法 | 参数 | 说明 |
|---|---|---|
| 获取值(GetValue) | 标签, 无标签时的值 | 从网络读取数据 |
| 存储值(StoreValue) | 标签, 值 | 向网络写入数据 |
4.2 事件
| 事件 | 参数 | 触发时机 |
|---|---|---|
| 已获得值时(GotValue) | 标签, 值 | 获取值成功后触发 |
| 值存储完毕时(ValueStored) | 无 | 存储值成功后触发 |
| 网络错误时(WebServiceError) | 消息 | 网络出错时触发 |
4.3 属性
| 属性 | 说明 | 默认值 |
|---|---|---|
| 服务地址(ServiceURL) | 数据库服务器地址 | MIT官方服务器(国外,慢) |
重要:MIT官方服务器在国外,速度慢且不支持中文。正式项目请使用国内服务器,参考:网络微数据库你用对了吗?
五、入门案例:存储和读取一个值
界面设计
- 文本输入框:输入要存储的内容
- 按钮1:存储
- 按钮2:读取
- 标签:显示读取结果
- 网络微数据库组件(不可见)
代码块
⚠️ 常见错误
❌ 错误写法(同步思维):六、进阶案例:多标签区分
当需要读取多种数据时,用标签参数区分:七、实战案例:多用户注册登录
设计思路
用两类标签存储用户数据:userlist→ 存储所有用户名列表(如:["张三","李四","王五"])user_张三→ 存储张三的详细信息(如:{"密码":"123456","邮箱":"..."})
- 可以快速查询用户是否存在(查 userlist)
- 每个用户数据独立存储,不超过大小限制
注册流程
登录流程
八、常见问题
Q1:数据存储后读不出来?
- 确认在
已获得值时事件中读取,不要在调用后立刻读 - 检查标签名是否完全一致(大小写敏感)
- 检查网络连接是否正常
Q2:中文存储后乱码?
- MIT官方服务器不支持中文,换用国内服务器
- 参考:网络微数据库你用对了吗?
Q3:数据量太大存不进去?
- 网络微数据库单个值上限约9000字节
- 解决方案:拆分存储(如用户列表 + 用户详情分开存)
Q4:多个用户同时操作会冲突吗?
- 网络微数据库不支持事务,高并发场景可能冲突
- 大型项目建议使用 CloudDB 或 LeanDB
Q5:如何搭建自己的服务器?
- 参考官方文档:创建自定义 TinyWebDB 服务
- 或使用国内现成服务
九、数据库方案选择指南
| 需求 | 推荐方案 |
|---|---|
| 简单数据,用户少 | 网络微数据库(TinyWebDB) |
| 需要实时推送 | 云数据库(CloudDB) |
| 国内大型项目 | LeanDB |
| 完全自主可控 | MySQL + PHP |
参考资料
文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn
参考资料与版权声明
原文来源
- MIT App Inventor 官方文档 - MIT App Inventor
- MIT App Inventor Community - MIT App Inventor Community
- MIT App Inventor GitHub - MIT CML
版权声明
本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:- MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
- MIT App Inventor Community 帖子版权归原作者所有
