跳到主要内容

轻流 x 数据库

应用场景

通过轻流应用表单实现与数据库(Mysql、SQL server、Oracle)进行对接

ps:

公有云环境下,连接数据库需要确保所连接的数据库可以在外网环境下访问,否则无法进行连接。

私有化环境下,需要部署对应的连接器,然后根据运维提供的访问地址进行对接数据库。

落地方案

原文画板

图文/视频演示

帮助文档

一、获取连接数据库基础信息

需要获取到的参数:

  • url:数据库地址
  • port:端口号
  • dbName:数据库名称
  • username:用户名
  • password:密码

如何找数据库的IP地址以及端口号:

这里是本地环境的数据库,可以配置内网穿透(或者其他方式)来进行打通,使得外网可以连接数据库

如何配置服务器的sqlserver可以通过外网访问

点击电脑左下方的“开始”->“Microsoft SQL Server2005”->“配置工具”->“SQL Server Configuration Manager”-> “展开网络配置” -->点击“MYSQLSERVER协议” -->双击“TCP/IP” -->选择“IP地址”就能看到端口号了

image.png

这些参数为连接数据库的必须条件

以连接数据库工具(DBeaver)连接MySQL为例:

图中圈出来的内容即为上述所说

image.png

二、获取access_token

  • 请求头(Header)
​参数是否必填说明
accessToken企业版客户需要试用请联系轻流技术支持申请token,试用token可以调用500次接口购买企业版客户,首次有10000次使用额度,后续使用完可联系客户成功人员进行增购。专有云/私有化客户,运维会单独提供token进行使用。

三、查询数据库表数据(select)

  1. 接口说明:用户调用数据库地址进行查询数据库表数据

  2. 接口地址:

  3. 公有云地址: https://connect.oalite.com/api/database/XXXXX

  4. 私有化/专有云: https://xxxxx.xxxx.xxx/database/XXXXX

  5. (XXXXX为数据库类型,可填写mysql / sqlserver / oracle,请依据数据库类型选择相应地址)

  6. 请求方式:POST

  7. 请求头(Header):accessToken

  8. 请求体(body):

参数必须类型说明
urlstring数据库地址
portstring端口号
dbNamestring数据库名称
usernamestring用户名
passwordstring密码
sqlTypestringsql类型 只支持:select/update/insert
sqlstringsql语句
  1. ​请求示例:
curl --location 'https://connect.oalite.com/api/database/sqlserver' \
--header 'accessToken: 4b9ee78556c948728207***' \
--header 'Content-Type: application/json' \
--data '{
"dbtype":"sqlserver",
"url": "114.116.***.**",
"port": "***",
"dbName": "***",
"username": "**",
"password": "*****",
"sqlType": "select",
"sql": "select * from ***"
}'
  1. 响应示例
{
"code":0,
"data":[
{
"join_date":"2021-18-02",
"sex":"男",
"name":"小赵",
"start_end_date":"2021-01-07~2021-01-09",
"id":"1001",
"dept":"测试部门",
"salary":"7000",
"age":"18"
},
{
"join_date":"2021-19-03",
"sex":"女",
"name":"小钱",
"start_end_date":"2021-01-01~2021-01-30",
"id":"1002",
"dept":"测试部门",
"salary":"6000",
"age":"18"
}
],
"msg":null
}

注意:对于查询数据库表数据,如果想要将数据获取到表格中,就使用q-linker获取。如果想要将数据存放在应用中,就使用Q source主动进行获取。具体场景看具体使用。这里是以QS主动为例

1、postman测试
  • 具体先在postman测试成功之后,再将具体配置移至到轻流中

image.png

2、QS主动配置获取数据库表数据
  • 表单设计具体接收返回的参数内容,这里简单举例获取数据表数据中的store_name、store_code

image.png

image.png

image.png

image.png

image.png

image.png

image.png

3、实际效果
  • 这里我点击手动运行,看下具体效果,其中申请人会默认以管理员身份

image.png

四、插入数据到数据库(insert)

  1. 接口说明:用户调用数据库接口进行数据插入

  2. 接口地址:

  3. 公有云地址: https://connect.oalite.com/api/database/XXXXX

  4. 私有化/专有云: https://xxxxx.xxxx.xxx/database/XXXXX

  5. (XXXXX为数据库类型,可填写mysql / sqlserver / oracle,请依据数据库类型选择相应地址)

  6. 请求方式:POST

  7. 请求头(Header):accessToken

  8. 请求体(body):

参数必须类型说明
urlstring数据库地址
portstring端口号
dbNamestring数据库名称
usernamestring用户名
passwordstring密码
sqlTypestringsql类型 只支持:select/update/insert
sqlstringsql语句
  • 对于推送数据,主要使用的是轻流的webhook功能,所以这里就以上述做个简单配置
1、webhook配置数据库插入数据
  • 表单设计,这里只做简单配置演示,具体推送字段需要根据具体需求做判断

例如:往test数据库中的表test110中插入数据

image.png

image.png

image.png

  • SQL语句需要根据数据库表的字段来进行填写

下图为例:数据类型为数字类型的话,轻流插入字段就不需要加单引号,反之其他字段需要加引号

然后具体SQL语句的写法可以参考该文档:

https://www.w3school.com.cn/sql/sql_insert.asp

image.png

image.png

2、实际效果
  • 完成配置后,点击保存发布后,后续发起表单数据,就会触发webhook,进行数据库表数据的插入操作

image.png

image.png

image.png

PS:如果遇到问题根据下述文档进行排查

https://exiao.yuque.com/rlf3k1/oanb79/apa9nf48a9gzql4r?singleDoc# 《如何排查接口问题》

大概率失败的原因是由于SQL语句中引号加与不加的问题。具体可以在postman测试成功之后再进行轻流的配置。

如果postman测试连接数据库报错如下:

  • 就是当前版本数据库TLS协议太低,需要上网下载对应版本的补丁或者更新数据库到最新版本,使得数据库TLS协议满足1.2即可

image.png

  • 该报错大概率是body中参数填写有问题,导致与数据库服务器之间的通信失败。

image.png