| 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 >= 5.0 或 .NET Framework 4.x</li><li>Thrift >= 0.14.1</li><li>NLog >= 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<int></code></td></tr><tr><td><code>ExecuteNonQueryStatementAsync(string sql)</code></td><td>执行非查询SQL语句,如DDL(数据定义语言)或DML(数据操作语言)命令</td><td>sql: 要执行的SQL语句。</td><td><code>Task<int></code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql)</code></td><td>执行查询SQL语句,并返回包含查询结果的SessionDataSet对象</td><td>sql: 要执行的SQL语句。</td><td><code>Task<SessionDataSet></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<SessionDataSet></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<int> 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<int> 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<SessionDataSet> 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<SessionDataSet> 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列表,当设置此项时会忽略SetHost和SetPort</td><td><code>无 </code></td></tr><tr><td><code>SetUsername(string username)</code></td><td>设置连接的用户名</td><td><code>"root"</code></td></tr><tr><td><code>SetPassword(string password)</code></td><td>设置连接的密码</td><td><code>"root" </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>""</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;"><</span><span style="color:#C678DD;">string</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> |
| <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;"> "localhost"</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;"> "root"</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;"> "root"</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;"> "UTC+08:00"</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;"> ""</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;"> ></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;"> * "License"); 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;"> * "AS IS" 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;">"CREATE DATABASE test1"</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;">"CREATE DATABASE test2"</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;">"use test2"</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;"> "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)"</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;"> "create table table2(region_id STRING TAG, plant_id STRING TAG, color STRING ATTRIBUTE, temperature FLOAT FIELD, speed DOUBLE FIELD) with (TTL=6600000)"</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;">"SHOW TABLES"</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;">"SHOW TABLES FROM test1"</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;"> "testTable1"</span><span style="color:#ABB2BF;">;</span></span> |
| <span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;"><</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">> </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;"><</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">> {</span></span> |
| <span class="line"><span style="color:#98C379;"> "region_id"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "plant_id"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "device_id"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "model"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "temperature"</span><span style="color:#ABB2BF;">,</span></span> |
| <span class="line"><span style="color:#98C379;"> "humidity"</span><span style="color:#ABB2BF;"> };</span></span> |
| <span class="line"><span style="color:#E5C07B;"> List</span><span style="color:#ABB2BF;"><</span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">> </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;"><</span><span style="color:#E5C07B;">TSDataType</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;">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;"><</span><span style="color:#E5C07B;">ColumnCategory</span><span style="color:#ABB2BF;">> </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;"><</span><span style="color:#E5C07B;">ColumnCategory</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;">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;"><</span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;"><</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">>> { };</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;"><</span><span style="color:#C678DD;">long</span><span style="color:#ABB2BF;">> { };</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;"> <</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;"><</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">> { </span><span style="color:#98C379;">"1"</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">"5"</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">"3"</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">"A"</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;">"select * from testTable1 "</span></span> |
| <span class="line"><span style="color:#56B6C2;"> +</span><span style="color:#98C379;"> "where region_id = '1' and plant_id in ('3', '5') and device_id = '3'"</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;">"test1"</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;">"SHOW TABLES"</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;">"use test2"</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;">"SHOW TABLES"</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;">"drop database test1"</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;">"drop database test2"</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}; |