| import{_ as n,c as a,b as l,o as e}from"./app-pmkzp6TS.js";const o={};function p(t,s){return e(),a("div",null,[...s[0]||(s[0]=[l(`<h1 id="c-native-api" tabindex="-1"><a class="header-anchor" href="#c-native-api"><span>C# Native API</span></a></h1><h2 id="_1-feature-overview" tabindex="-1"><a class="header-anchor" href="#_1-feature-overview"><span>1. Feature Overview</span></a></h2><p>IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of time-series objects for writing without SQL construction. It is recommended to use the connection pool for multi-threaded parallel database operations.</p><h2 id="_2-usage-instructions" tabindex="-1"><a class="header-anchor" href="#_2-usage-instructions"><span>2. Usage Instructions</span></a></h2><p><strong>Environment Requirements:</strong></p><ul><li>.NET SDK >= 5.0 or .NET Framework 4.x</li><li>Thrift >= 0.14.1</li><li>NLog >= 4.7.9</li></ul><p><strong>Dependency Installation:</strong></p><p>It supports installation using tools such as NuGet Package Manager or .NET CLI. Taking .NET CLI as an example:</p><p>If using .NET 5.0 or a later version of the SDK, enter the following command to install the latest NuGet package:</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>Note: Do not use a newer client to connect to an older server, as this may cause connection failures or unexpected errors.</p><h2 id="_3-read-write-operations" tabindex="-1"><a class="header-anchor" href="#_3-read-write-operations"><span>3. Read/Write Operations</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-functional-description" tabindex="-1"><a class="header-anchor" href="#_3-1-1-functional-description"><span>3.1.1 Functional Description</span></a></h4><p>The <code>TableSessionPool</code> defines basic operations for interacting with IoTDB, supporting data insertion, query execution, and session closure. It also serves as a connection pool to efficiently reuse connections and properly release resources when unused. This interface defines how to acquire sessions from the pool and how to close the pool.</p><h4 id="_3-1-2-method-list" tabindex="-1"><a class="header-anchor" href="#_3-1-2-method-list"><span>3.1.2 Method List</span></a></h4><p>Below are the methods defined in <code>TableSessionPool</code> with detailed descriptions:</p><table><thead><tr><th>Method</th><th>Description</th><th>Parameters</th><th>Return Type</th></tr></thead><tbody><tr><td><code>Open(bool enableRpcCompression)</code></td><td>Opens a session connection with custom <code>enableRpcCompression</code></td><td><code>enableRpcCompression</code>: Whether to enable <code>RpcCompression</code> (requires server-side configuration alignment)</td><td><code>Task</code></td></tr><tr><td><code>Open()</code></td><td>Opens a session connection without enabling <code>RpcCompression</code></td><td>None</td><td><code>Task</code></td></tr><tr><td><code>InsertAsync(Tablet tablet)</code></td><td>Inserts a <code>Tablet</code> object containing time-series data into the database</td><td><code>tablet</code>: The Tablet object to insert</td><td><code>Task<int></code></td></tr><tr><td><code>ExecuteNonQueryStatementAsync(string sql)</code></td><td>Executes a non-query SQL statement (e.g., DDL/DML commands)</td><td><code>sql</code>: The SQL statement to execute</td><td><code>Task<int></code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql)</code></td><td>Executes a query SQL statement and returns a <code>SessionDataSet</code> with results</td><td><code>sql</code>: The SQL query to execute</td><td><code>Task<SessionDataSet></code></td></tr><tr><td><code>ExecuteQueryStatementAsync(string sql, long timeoutInMs)</code></td><td>Executes a query SQL statement with a timeout (milliseconds)</td><td><code>sql</code>: The SQL query to execute <br> <code>timeoutInMs</code>: Query timeout in milliseconds</td><td><code>Task<SessionDataSet></code></td></tr><tr><td><code>Close()</code></td><td>Closes the session and releases held resources</td><td>None</td><td><code>Task</code></td></tr></tbody></table><h4 id="_3-1-3-interface-examples" tabindex="-1"><a class="header-anchor" href="#_3-1-3-interface-examples"><span>3.1.3 Interface Examples</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-functional-description" tabindex="-1"><a class="header-anchor" href="#_3-2-1-functional-description"><span>3.2.1 Functional Description</span></a></h4><p>The <code>TableSessionPool.Builder</code> class configures and creates instances of <code>TableSessionPool</code>, allowing developers to set connection parameters, session settings, and pooling behaviors.</p><h4 id="_3-2-2-configuration-options" tabindex="-1"><a class="header-anchor" href="#_3-2-2-configuration-options"><span>3.2.2 Configuration Options</span></a></h4><p>Below are the available configuration options for <code>TableSessionPool.Builder</code> and their defaults:</p><table><thead><tr><th><strong>Configuration Method</strong></th><th><strong>Description</strong></th><th><strong>Default Value</strong></th></tr></thead><tbody><tr><td><code>SetHost(string host)</code></td><td>Sets the IoTDB node host</td><td><code>localhost</code></td></tr><tr><td><code>SetPort(int port)</code></td><td>Sets the IoTDB node port</td><td><code>6667</code></td></tr><tr><td><code>SetNodeUrls(List nodeUrls)</code></td><td>Sets IoTDB cluster node URLs (overrides <code>SetHost</code>/<code>SetPort</code> when used)</td><td>Not set</td></tr><tr><td><code>SetUsername(string username)</code></td><td>Sets the connection username</td><td><code>"root"</code></td></tr><tr><td><code>SetPassword(string password)</code></td><td>Sets the connection password</td><td><code>"root"</code></td></tr><tr><td><code>SetFetchSize(int fetchSize)</code></td><td>Sets the fetch size for query results</td><td><code>1024</code></td></tr><tr><td><code>SetZoneId(string zoneId)</code></td><td>Sets the timezone ZoneID</td><td><code>UTC+08:00</code></td></tr><tr><td><code>SetPoolSize(int poolSize)</code></td><td>Sets the maximum number of sessions in the connection pool</td><td><code>8</code></td></tr><tr><td><code>SetEnableRpcCompression(bool enable)</code></td><td>Enables/disables RPC compression</td><td><code>false</code></td></tr><tr><td><code>SetConnectionTimeoutInMs(int timeout)</code></td><td>Sets the connection timeout in milliseconds</td><td><code>500</code></td></tr><tr><td><code>SetDatabase(string database)</code></td><td>Sets the target database name</td><td><code>""</code></td></tr></tbody></table><h4 id="_3-2-3-interface-examples" tabindex="-1"><a class="header-anchor" href="#_3-2-3-interface-examples"><span>3.2.3 Interface Examples</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-example" tabindex="-1"><a class="header-anchor" href="#_4-example"><span>4. Example</span></a></h2><p>Complete example : <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(o,[["render",p]]),i=JSON.parse('{"path":"/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html","title":"C# Native API","lang":"en-US","frontmatter":{"description":"C# Native API 1. Feature Overview IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of t...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"C# Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-03-25T07:01:57.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.html"}],["meta",{"property":"og:site_name","content":"IoTDB Website"}],["meta",{"property":"og:title","content":"C# Native API"}],["meta",{"property":"og:description","content":"C# Native API 1. Feature Overview IoTDB provides a C# native client driver and corresponding connection pool, offering object-oriented interfaces that allow direct assembly of t..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:locale:alternate","content":"zh-CN"}],["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":"zh-cn","href":"https://iotdb.apache.org/zh/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":4.56,"words":1368},"filePathRelative":"UserGuide/latest-Table/API/Programming-CSharp-Native-API_apache.md","autoDesc":true}');export{r as comp,i as data}; |