@@ -11,7 +11,7 @@ C# API遵循面向接口编程的原则。C# API使用接口类IEntity来表示D
11
11
scalar|` Basic<DataType> ` |BasicInt, BasicDouble, BasicDate, etc.
12
12
vector,matrix|` Basic<DataType><DataForm> ` |BasicIntVector, BasicDoubleMatrix, BasicAnyVector, etc.
13
13
set, dictionary和table|` Basic<DataForm> ` |BasicSet, BasicDictionary, BasicTable.
14
- chart|BasicChart|
14
+ chart||BasicChart
15
15
16
16
“Basic”表示基本的数据类型接口,` <DataType> ` 表示DolphinDB数据类型名称,` <DataForm> ` 是一个DolphinDB数据形式名称。
17
17
@@ -42,7 +42,6 @@ public void Test_Connect(){
42
42
DBConnection conn=new DBConnection();
43
43
Assert.AreEqual(true,conn.connect("localhost",8848));
44
44
}
45
-
46
45
```
47
46
使用用户名和密码建立连接:
48
47
@@ -121,7 +120,6 @@ public void testSet(){
121
120
Console.WriteLine(s.rows());
122
121
Console.WriteLine(s.columns());
123
122
}
124
-
125
123
```
126
124
127
125
- 矩阵
@@ -136,7 +134,6 @@ public void testIntMatrix(){
136
134
Console.WriteLine(m.columns());
137
135
Console.WriteLine(((BasicInt)m.get(0, 1)).getValue());
138
136
}
139
-
140
137
```
141
138
142
139
- 字典
@@ -152,7 +149,6 @@ public void testDictionary(){
152
149
Console.WriteLine(val);
153
150
}
154
151
}
155
-
156
152
```
157
153
158
154
@@ -166,7 +162,6 @@ public void testTable(){
166
162
DataTable dt = tb.toDataTable();
167
163
Console.WriteLine(dt.Rows.Count);
168
164
}
169
-
170
165
```
171
166
- NULL对象
172
167
@@ -176,7 +171,6 @@ public void testVoid(){
176
171
IEntity obj = conn.run("NULL");
177
172
Assert.AreEqual(obj.getObject(), null);
178
173
}
179
-
180
174
```
181
175
182
176
### 7.调用DolphinDB函数
@@ -194,7 +188,6 @@ public void testFunction(){
194
188
BasicDouble result = (BasicDouble)conn.run("sum", args);
195
189
Console.WriteLine(result.getValue());
196
190
}
197
-
198
191
```
199
192
200
193
### 8.将对象上传到DolphinDB服务器
@@ -211,7 +204,6 @@ public void testUpload(){
211
204
BasicIntVector v = (BasicIntVector)conn.run("table_uploaded.id");
212
205
Console.WriteLine(v.rows());
213
206
}
214
-
215
207
```
216
208
217
209
### 9. 如何将C#数据表对象保存到DolphinDB的数据库中
@@ -441,3 +433,35 @@ ThreadPooledClient client = new ThreadPooledClient(subscribePort);
441
433
442
434
client.subscribe(serverIP, serverPort, tableName, new MyHandler(), offsetInt);
443
435
```
436
+
437
+ #### 断线重连
438
+
439
+ ` reconnect ` 参数是一个布尔值,表示订阅意外中断后,是否会自动重新订阅。默认值为` false ` 。如果` reconnect=true ` ,有以下三种情况:
440
+
441
+ - 如果发布端与订阅端处于正常状态,但是网络中断,那么订阅端会在网络正常时,自动从中断位置重新订阅。
442
+ - 如果发布端崩溃,订阅端会在发布端重启后不断尝试重新订阅。
443
+ - 如果发布端对流数据表启动了持久化,发布端重启后会首先读取硬盘上的数据,直到发布端读取到订阅中断位置的数据,订阅端才能成功重新订阅。
444
+ - 如果发布端没有对流数据表启用持久化,那么订阅端将自动重新订阅失败。
445
+ - 如果订阅端崩溃,订阅端重启后不会自动重新订阅,需要重新执行` subscribe ` 函数。
446
+
447
+ 以下例子在订阅时,设置` reconnect ` 为` true ` :
448
+
449
+ ```
450
+ PollingClient client = new PollingClient(subscribePort);
451
+ TopicPoller poller1 = client.subscribe(serverIP, serverPort, tableName, offset, true);
452
+ ```
453
+
454
+ #### 启用filter
455
+
456
+ ` filter ` 参数是一个向量。该参数需要发布端配合` setStreamTableFilterColumn ` 函数一起使用。使用` setStreamTableFilterColumn ` 指定流数据表的过滤列,流数据表过滤列在` filter ` 中的数据才会发布到订阅端,不在` filter ` 中的数据不会发布。
457
+
458
+ 以下例子将一个包含元素1和2的整数类型向量作为` subscribe ` 的` filter ` 参数:
459
+
460
+ ```
461
+ BasicIntVector filter = new BasicIntVector(2);
462
+ filter.setInt(0, 1);
463
+ filter.setInt(1, 2);
464
+
465
+ PollingClient client = new PollingClient(subscribePort);
466
+ TopicPoller poller1 = client.subscribe(serverIP, serverPort, tableName, actionName, offset, filter);
467
+ ```
0 commit comments