数据库写入
# TaskRunner 自定程序 - 数据库写入
# 1. 说明
- 任务运行器 TaskRunner 通过自定程序,调用数据查询,根据URL参数引入写入的数据,执行数据写入操作。
- 范例使用的数据库为 FastWeb 的示例数据库表。数据表结构如下:
CREATE TABLE [dbo].[Pass_Cust](
[cust_id] [nvarchar](50) NOT NULL,
[cust_name] [nvarchar](50) NOT NULL,
[cust_age] [nvarchar](50) NULL,
[cust_sex] [nvarchar](50) NULL,
[cust_phone] [nvarchar](50) NULL,
[cust_money] [nvarchar](50) NULL,
[cust_date] [date] NULL,
[cust_time] [time](7) NULL,
[cust_memo] [nvarchar](max) NULL,
[cust_image] [image] NULL,
CONSTRAINT [PK_Pass_Cust] PRIMARY KEY CLUSTERED
(
[cust_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 2. 设计程序
TaskRunner 的初始示例已包含 数据库写入
自定程序。下面介绍创建自定程序的流程。
- 点击
自定程序
选项卡,在自定程序界面中点击新建
按钮,打开新建程序界面。 - 在新建程序界面,填写要设计的自定程序的基本信息。如下图所示。填写完成点击
保存
按钮。
- 返回自定程序列表界面,选择刚才创建的
JS021
自定程序,点击菜单栏中的设计
按钮,打开程序设计器界面。 - 在程序设计器界面中输入自定程序代码,代码示例如下。完成后,点击
保存
按钮。
{
var d,connection,command,s;
connection = UgParams.Values["connection"]; //数据库设置的名称
d = new TFastDataSet(nil);
TFastDataSet(d).ConnectionDefName = iif(connection != "",connection,"demo");
TFastDataSet(d).CommandText = "Select top 0 * from Pass_Cust";
TFastDataSet(d).Open;
TFastDataSet(d).Append;
TFastDataSet(d).FieldByName("cust_id").AsString = UGCM.CreateGuid;
TFastDataSet(d).FieldByName("cust_name").AsString = iif(UgParams.Values["name"] == "","LiMing",UgParams.Values["name"]);
TFastDataSet(d).FieldByName("cust_age").AsString = iif(UgParams.Values["age"] =="","28",UgParams.Values["age"]);
TFastDataSet(d).Post;
TFastDataSet(d).SubmitUpdates;
s = TFastDataSet(d).ToJSONArrayString;
UGMM.AddLog("Added:" + s);
d.Free;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

- 如需要测试效果,可在程序设计器界面中点击
运行
按钮进行测试。运行后,可在数据表Pass_Cust
中看到插入的数据记录。
程序中定义的参数说明如下:
名称 | 说明 | 是否必填 | 默认值 |
---|---|---|---|
connection | 数据连接的名称 | 是 | demo |
name | 插入的数据记录1(姓名) | 是 | LiMing |
age | 插入的数据记录2(年龄) | 是 | 28 |
# 3. 调用执行
设计完成的自定程序可使用以下方式来调用执行。
# 3.1. RestAPI
使用浏览器或RestAPI 客户端,访问以下地址,执行自定程序调用。请将 {ip}
修改为运行 TaskRunner 主机的IP地址,{port}
修改为 TaskRunner WebSocket 服务端监听的地址。
http://{ip}:{port}?restapi=script&taskname=JS021
1
如需要自定义参数,参照以下方式执行。其中将 {}
标识的参数值替换为目标参数值。
http://{ip}:{port}?restapi=script&taskname=JS021&connection={connection}&name={name}&age={age}
1
# 3.2. WebSocket
使用WebSocket客户端,连接至 TaskRunner 中的 WebSocket 服务端。向 WebSocket 服务端发送以下文本实现自定程序的调用。
{"action":"script","taskname":"JS021"}
1
如需要自定义参数,参照以下方式执行。其中将 {}
标识的参数值替换为目标参数值。
{"action":"script","taskname":"JS021","params":[{"name":"connection","value":"{connection}"},{"name":"name","value":"{name}"},{"name":"age","value":"{age}"}]}
1
# 3.3. MQTT
使用 MQTT 客户端,连接至 TaskRunner 连接的 MQTT 服务器。MQTT 客户端向 TaskRunner 订阅的主题发送以下文本实现自定程序的调用。
{"action":"script","taskname":"JS021"}
1
如需要自定义参数,参照以下方式执行。其中将 {}
标识的参数值替换为目标参数值。
{"action":"script","taskname":"JS021","params":["params":[{"name":"connection","value":"{connection}"},{"name":"name","value":"{name}"},{"name":"age","value":"{age}"}]}
1