blob: 3014c4a34c6986f11f87d1f195aff292012eece0 [file]
import{_ as n,c as a,b as l,o as e}from"./app-pmkzp6TS.js";const p={};function o(t,s){return e(),a("div",null,[...s[0]||(s[0]=[l(`<h1 id="c-原生接口" tabindex="-1"><a class="header-anchor" href="#c-原生接口"><span>C# 原生接口</span></a></h1><h2 id="_1-功能介绍" tabindex="-1"><a class="header-anchor" href="#_1-功能介绍"><span>1. 功能介绍</span></a></h2><p>IoTDB具备C#原生客户端驱动和对应的连接池,提供对象化接口,可以直接组装时序对象进行写入,无需拼装 SQL。推荐使用连接池,多线程并行操作数据库。</p><h2 id="_2-使用方式" tabindex="-1"><a class="header-anchor" href="#_2-使用方式"><span>2. 使用方式</span></a></h2><p><strong>环境要求:</strong></p><ul><li>.NET SDK &gt;= 5.0 .NET Framework 4.x</li><li>Thrift &gt;= 0.14.1</li><li>NLog &gt;= 4.7.9</li></ul><p><strong>依赖安装:</strong></p><p>支持使用 NuGet Package Manager, .NET CLI等工具来安装,以 .NET CLI为例</p><p>如果使用的是\\.NET 5.0 或者更高版本的SDK,输入如下命令即可安装最新的NuGet包</p><div class="language-plain line-numbers-mode" data-highlighter="shiki" data-ext="plain" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-plain"><span class="line"><span>dotnet add package Apache.IoTDB</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>注意:请勿使用高版本客户端连接低版本服务。</p><h2 id="_3-读写操作" tabindex="-1"><a class="header-anchor" href="#_3-读写操作"><span>3. 读写操作</span></a></h2><h3 id="_3-1-tablesessionpool" tabindex="-1"><a class="header-anchor" href="#_3-1-tablesessionpool"><span>3.1 TableSessionPool</span></a></h3><h4 id="_3-1-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_3-1-1-功能描述"><span>3.1.1 功能描述</span></a></h4><p>TableSessionPool 定义了与IoTDB交互的基本操作,可以执行数据插入、查询操作以及关闭会话等,同时也是一个连接池这个池可以帮助我们高效地重用连接,并且在不需要时正确地清理资源, 该接口定义了如何从池中获取会话以及如何关闭池的基本操作。</p><h4 id="_3-1-2-方法列表" tabindex="-1"><a class="header-anchor" href="#_3-1-2-方法列表"><span>3.1.2 方法列表</span></a></h4><p>以下是 TableSessionPool 中定义的方法及其详细说明:</p><table><thead><tr><th>方法</th><th>描述</th><th>参数</th><th>返回值</th></tr></thead><tbody><tr><td><code>Open(bool enableRpcCompression)</code></td><td>打开会话连接,自定义<code>enableRpcCompression</code></td><td><code>enableRpcCompression</code>:是否启用<code>RpcCompression</code>,此参数需配合 Server 端配置一同使用</td><td><code>Task</code></td></tr><tr><td><code>Open()</code></td><td>打开会话连接,不开启<code>RpcCompression</code></td><td>无</td><td><code>Task</code></td></tr><tr><td><code>InsertAsync(Tablet tablet)</code></td><td>将一个包含时间序列数据的Tablet 对象插入到数据库中</td><td>tablet: 要插入的Tablet对象</td><td><code>Task&lt;int&gt;</code></td></tr><tr><td><code>ExecuteNonQueryStatementAsync(string sql)</code></td><td>执行非查询SQL语句,如DDL(数据定义语言)或DML(数据操作语言)命令</td><td>sql: 要执行的SQL语句。</td><td><code>Task&lt;int&gt;</code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql)</code></td><td>执行查询SQL语句,并返回包含查询结果的SessionDataSet对象</td><td>sql: 要执行的SQL语句。</td><td><code>Task&lt;SessionDataSet&gt;</code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql, long timeoutInMs)</code></td><td>执行查询SQL语句,并设置查询超时时间(以毫秒为单位)</td><td>sql: 要执行的查询SQL语句。<br>timeoutInMs: 查询超时时间(毫秒)</td><td><code>Task&lt;SessionDataSet&gt;</code></td></tr><tr><td><code>Close()</code></td><td>关闭会话,释放所持有的资源</td><td>无</td><td><code>Task</code></td></tr></tbody></table><h4 id="_3-1-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_3-1-3-接口展示"><span>3.1.3 接口展示</span></a></h4><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#C678DD;">public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> Open</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">bool</span><span style="color:#E5C07B;"> enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">CancellationToken</span><span style="color:#E5C07B;"> cancellationToken</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> default)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task Open(</span><span style="color:#E5C07B;">CancellationToken</span><span style="color:#E5C07B;"> cancellationToken</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> default)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;int&gt; InsertAsync(</span><span style="color:#E5C07B;">Tablet</span><span style="color:#E5C07B;"> tablet</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;int&gt; ExecuteNonQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;SessionDataSet&gt; ExecuteQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task&lt;SessionDataSet&gt; ExecuteQueryStatementAsync(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sql</span><span style="color:#ABB2BF;">, </span><span style="color:#C678DD;">long</span><span style="color:#E5C07B;"> timeoutInMs</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#ABB2BF;"> public async Task Close()</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-2-tablesessionpool-builder" tabindex="-1"><a class="header-anchor" href="#_3-2-tablesessionpool-builder"><span>3.2 TableSessionPool.Builder</span></a></h3><h4 id="_3-2-1-功能描述" tabindex="-1"><a class="header-anchor" href="#_3-2-1-功能描述"><span>3.2.1 功能描述</span></a></h4><p>TableSessionPool.Builder 是 TableSessionPool的构造器,用于配置和创建 TableSessionPool 的实例。允许开发者配置连接参数、会话参数和池化行为等。</p><h4 id="_3-2-2-配置选项" tabindex="-1"><a class="header-anchor" href="#_3-2-2-配置选项"><span>3.2.2 配置选项</span></a></h4><p>以下是 TableSessionPool.Builder 类的可用配置选项及其默认值:</p><table><thead><tr><th><strong>配置项</strong></th><th><strong>描述</strong></th><th><strong>默认值</strong></th></tr></thead><tbody><tr><td><code>SetHost(string host)</code></td><td>设置IoTDB的节点 host</td><td><code>localhost</code></td></tr><tr><td><code>SetPort(int port)</code></td><td>设置IoTDB的节点端口</td><td><code>6667</code></td></tr><tr><td><code>SetNodeUrls(List nodeUrls)</code></td><td>设置IoTDB集群的节点URL列表,当设置此项时会忽略SetHostSetPort</td><td><code>无 </code></td></tr><tr><td><code>SetUsername(string username)</code></td><td>设置连接的用户名</td><td><code>&quot;root&quot;</code></td></tr><tr><td><code>SetPassword(string password)</code></td><td>设置连接的密码</td><td><code>&quot;root&quot; </code></td></tr><tr><td><code>SetFetchSize(int fetchSize)</code></td><td>设置查询结果的获取大小</td><td><code>1024 </code></td></tr><tr><td><code>SetZoneId(string zoneId)</code></td><td>设置时区相关的ZoneId</td><td><code>UTC+08:00</code></td></tr><tr><td><code>SetPoolSize(int poolSize)</code></td><td>设置会话池的最大大小,即池中允许的最大会话数</td><td><code>8 </code></td></tr><tr><td><code>SetEnableRpcCompression(bool enableRpcCompression)</code></td><td>是否启用RPC压缩</td><td><code>false</code></td></tr><tr><td><code>SetConnectionTimeoutInMs(int timeout)</code></td><td>设置连接超时时间(毫秒)</td><td><code>500</code></td></tr><tr><td><code>SetDatabase(string database)</code></td><td>设置目标数据库名称</td><td><code>&quot;&quot;</code></td></tr></tbody></table><h4 id="_3-2-3-接口展示" tabindex="-1"><a class="header-anchor" href="#_3-2-3-接口展示"><span>3.2.3 接口展示</span></a></h4><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#C678DD;">public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetHost</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> host</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _host</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> host</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPort</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> port</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _port</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> port</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _username</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> username</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _password</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> password</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> fetchSize</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _fetchSize</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> fetchSize</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetZoneId</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> zoneId</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _zoneId</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> zoneId</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetPoolSize</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> poolSize</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _poolSize</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> poolSize</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetEnableRpcCompression</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">bool</span><span style="color:#E5C07B;"> enableRpcCompression</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _enableRpcCompression</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> enableRpcCompression</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetConnectionTimeoutInMs</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">int</span><span style="color:#E5C07B;"> timeout</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _connectionTimeoutInMs</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> timeout</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _nodeUrls</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> nodeUrls</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> protected</span><span style="color:#C678DD;"> internal</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetSqlDialect</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> sqlDialect</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _sqlDialect</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> sqlDialect</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> Builder</span><span style="color:#61AFEF;"> SetDatabase</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E5C07B;"> database</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _database</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> database</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#61AFEF;"> Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> _host</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;localhost&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _port</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 6667</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _username</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;root&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _password</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;root&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _fetchSize</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 1024</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _zoneId</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;UTC+08:00&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _poolSize</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 8</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _enableRpcCompression</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> false</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _connectionTimeoutInMs</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 500</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _sqlDialect</span><span style="color:#56B6C2;"> =</span><span style="color:#E5C07B;"> IoTDBConstant</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TABLE_SQL_DIALECT</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E06C75;"> _database</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#E5C07B;"> TableSessionPool</span><span style="color:#61AFEF;"> Build</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> SessionPool</span><span style="color:#E06C75;"> sessionPool</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // if nodeUrls is not empty, use nodeUrls to create session pool</span></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">_nodeUrls</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Count</span><span style="color:#56B6C2;"> &gt;</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> sessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">SessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">_nodeUrls</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_username</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_password</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_fetchSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_zoneId</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_poolSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_connectionTimeoutInMs</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_sqlDialect</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_database</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> else</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E06C75;"> sessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">SessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">_host</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_port</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_username</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_password</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_fetchSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_zoneId</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_poolSize</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_enableRpcCompression</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_connectionTimeoutInMs</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_sqlDialect</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">_database</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> return</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">sessionPool</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="_4-示例代码" tabindex="-1"><a class="header-anchor" href="#_4-示例代码"><span>4. 示例代码</span></a></h2><p>完整示例:<a href="https://github.com/apache/iotdb-client-csharp/blob/main/samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs" target="_blank" rel="noopener noreferrer">samples/Apache.IoTDB.Samples/TableSessionPoolTest.cs</a></p><div class="language-c# line-numbers-mode" data-highlighter="shiki" data-ext="c#" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code class="language-c#"><span class="line"><span style="color:#7F848E;font-style:italic;">/*</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * Licensed to the Apache Software Foundation (ASF) under one</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * or more contributor license agreements. See the NOTICE file</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * distributed with this work for additional information</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * regarding copyright ownership. The ASF licenses this file</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * to you under the Apache License, Version 2.0 (the</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * &quot;License&quot;); you may not use this file except in compliance</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * with the License. You may obtain a copy of the License at</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> *</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * http://www.apache.org/licenses/LICENSE-2.0</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> *</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * Unless required by applicable law or agreed to in writing,</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * software distributed under the License is distributed on an</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * KIND, either express or implied. See the License for the</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * specific language governing permissions and limitations</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> * under the License.</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> */</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Collections</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Generic</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> System</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Threading</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Tasks</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">using</span><span style="color:#E5C07B;"> Apache</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">IoTDB</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">DataStructure</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">namespace</span><span style="color:#E5C07B;"> Apache</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">IoTDB</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Samples</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;">public</span><span style="color:#C678DD;"> class</span><span style="color:#E5C07B;"> TableSessionPoolTest</span></span>
<span class="line"><span style="color:#ABB2BF;">{</span></span>
<span class="line"><span style="color:#C678DD;"> private</span><span style="color:#C678DD;"> readonly</span><span style="color:#E5C07B;"> SessionPoolTest</span><span style="color:#E06C75;"> sessionPoolTest</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#61AFEF;"> TableSessionPoolTest</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">SessionPoolTest</span><span style="color:#E5C07B;"> sessionPoolTest</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> this</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#56B6C2;"> =</span><span style="color:#E06C75;"> sessionPoolTest</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> Test</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestCleanup</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestSelectAndInsert</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#61AFEF;">TestUseDatabase</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // await TestCleanup();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestSelectAndInsert</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;CREATE DATABASE test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;CREATE DATABASE test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // or use full qualified table name</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span></span>
<span class="line"><span style="color:#98C379;"> &quot;create table test1.table1(region_id STRING TAG, plant_id STRING TAG, device_id STRING TAG, model STRING ATTRIBUTE, temperature FLOAT FIELD, humidity DOUBLE FIELD) with (TTL=3600000)&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span></span>
<span class="line"><span style="color:#98C379;"> &quot;create table table2(region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD, speed DOUBLE FIELD) with (TTL=6600000)&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables by specifying another database</span></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // using SHOW tables FROM</span></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES FROM test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableName</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;testTable1&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">columnNames</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt; {</span></span>
<span class="line"><span style="color:#98C379;"> &quot;region_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;plant_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;device_id&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;model&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;temperature&quot;</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#98C379;"> &quot;humidity&quot;</span><span style="color:#ABB2BF;"> };</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">dataTypes</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">&gt;{</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">STRING</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FLOAT</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">DOUBLE</span><span style="color:#ABB2BF;">};</span></span>
<span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">&gt; </span><span style="color:#E06C75;">columnCategories</span><span style="color:#56B6C2;"> =</span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">&gt;{</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TAG</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">ATTRIBUTE</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FIELD</span><span style="color:#ABB2BF;">,</span></span>
<span class="line"><span style="color:#E5C07B;"> ColumnCategory</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">FIELD</span><span style="color:#ABB2BF;">};</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> values</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt;&gt; { };</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> timestamps</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">long</span><span style="color:#ABB2BF;">&gt; { };</span></span>
<span class="line"><span style="color:#C678DD;"> for</span><span style="color:#ABB2BF;"> (</span><span style="color:#C678DD;">long</span><span style="color:#E06C75;"> timestamp</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 0</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">timestamp</span><span style="color:#56B6C2;"> &lt;</span><span style="color:#D19A66;"> 100</span><span style="color:#ABB2BF;">; </span><span style="color:#E06C75;">timestamp</span><span style="color:#56B6C2;">++</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#E5C07B;"> timestamps</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">timestamp</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> values</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Add</span><span style="color:#ABB2BF;">(new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt; { </span><span style="color:#98C379;">&quot;1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;5&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;A&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">1.23F</span><span style="color:#56B6C2;"> +</span><span style="color:#E06C75;"> timestamp</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">111.1</span><span style="color:#56B6C2;"> +</span><span style="color:#E06C75;"> timestamp</span><span style="color:#ABB2BF;"> });</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tablet</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">Tablet</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">tableName</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">columnNames</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">columnCategories</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">dataTypes</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">values</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">timestamps</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">InsertAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">tablet</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;select * from testTable1 &quot;</span></span>
<span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> &quot;where region_id = &#39;1&#39; and plant_id in (&#39;3&#39;, &#39;5&#39;) and device_id = &#39;3&#39;&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestUseDatabase</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetDatabase</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;test1&quot;</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;use test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;"> // show tables from current database</span></span>
<span class="line"><span style="color:#E06C75;"> res</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;SHOW TABLES&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#E5C07B;"> res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ShowTableNames</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#C678DD;"> while</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">HasNext</span><span style="color:#ABB2BF;">()) </span><span style="color:#E5C07B;">Console</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">WriteLine</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Next</span><span style="color:#ABB2BF;">());</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">res</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> public</span><span style="color:#C678DD;"> async</span><span style="color:#E5C07B;"> Task</span><span style="color:#61AFEF;"> TestCleanup</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> {</span></span>
<span class="line"><span style="color:#C678DD;"> var</span><span style="color:#E06C75;"> tableSessionPool</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">TableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">Builder</span><span style="color:#ABB2BF;">()</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetNodeUrls</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">nodeUrls</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetUsername</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">username</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetPassword</span><span style="color:#ABB2BF;">(</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">password</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">SetFetchSize</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">1024</span><span style="color:#ABB2BF;">)</span></span>
<span class="line"><span style="color:#ABB2BF;"> .</span><span style="color:#61AFEF;">Build</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Open</span><span style="color:#ABB2BF;">(</span><span style="color:#D19A66;">false</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#C678DD;"> if</span><span style="color:#ABB2BF;"> (</span><span style="color:#E5C07B;">sessionPoolTest</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">debug</span><span style="color:#ABB2BF;">) </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">OpenDebugMode</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;drop database test1&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">ExecuteNonQueryStatementAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;drop database test2&quot;</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#ABB2BF;"> await </span><span style="color:#E5C07B;">tableSessionPool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><span style="color:#ABB2BF;">();</span></span>
<span class="line"><span style="color:#ABB2BF;"> }</span></span>
<span class="line"><span style="color:#ABB2BF;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,31)])])}const r=n(p,[["render",o]]),i=JSON.parse('{"path":"/zh/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html","title":"C# 原生接口","lang":"zh-CN","frontmatter":{"description":"C# 原生接口 1. 功能介绍 IoTDB具备C#原生客户端驱动和对应的连接池,提供对象化接口,可以直接组装时序对象进行写入,无需拼装 SQL。推荐使用连接池,多线程并行操作数据库。 2. 使用方式 环境要求: .NET SDK >= 5.0 或 .NET Framework 4.x Thrift >= 0.14.1 NLog >= 4.7.9 依赖安...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"C# 原生接口\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-03-25T07:01:57.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/zh/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"C# 原生接口"}],["meta",{"property":"og:description","content":"C# 原生接口 1. 功能介绍 IoTDB具备C#原生客户端驱动和对应的连接池,提供对象化接口,可以直接组装时序对象进行写入,无需拼装 SQL。推荐使用连接池,多线程并行操作数据库。 2. 使用方式 环境要求: .NET SDK >= 5.0 或 .NET Framework 4.x Thrift >= 0.14.1 NLog >= 4.7.9 依赖安..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:locale:alternate","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-03-25T07:01:57.000Z"}],["meta",{"property":"article:modified_time","content":"2026-03-25T07:01:57.000Z"}],["link",{"rel":"alternate","hreflang":"en-us","href":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html"}]]},"git":{"createdTime":1743127782000,"updatedTime":1774422117000,"contributors":[{"name":"leto-b","username":"leto-b","email":"bingqian.bai@timecho.com","commits":4,"url":"https://github.com/leto-b"}]},"readingTime":{"minutes":5.5,"words":1649},"filePathRelative":"zh/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.md","autoDesc":true}');export{r as comp,i as data};