資料庫寫入
# 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