blob: 39e5fdd12b7ca1c8b73ca64cfbf035734b609a47 [file] [log] [blame]
import{_ as e,c as t,b as a,o as n}from"./app-BJ81rGGe.js";const o={};function l(r,s){return n(),t("div",null,s[0]||(s[0]=[a(`<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-installation" tabindex="-1"><a class="header-anchor" href="#_1-installation"><span>1. Installation</span></a></h2><h3 id="_1-1-install-from-nuget-package" tabindex="-1"><a class="header-anchor" href="#_1-1-install-from-nuget-package"><span>1.1 Install from NuGet Package</span></a></h3><p>We have prepared Nuget Package for C# users. Users can directly install the client through .NET CLI. <a href="https://www.nuget.org/packages/Apache.IoTDB/" target="_blank" rel="noopener noreferrer">The link of our NuGet Package is here</a>. Run the following command in the command line to complete installation</p><div class="language-sh line-numbers-mode" data-highlighter="shiki" data-ext="sh" data-title="sh" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#61AFEF;">dotnet</span><span style="color:#98C379;"> add</span><span style="color:#98C379;"> package</span><span style="color:#98C379;"> 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 that the <code>Apache.IoTDB</code> package only supports versions greater than <code>.net framework 4.6.1</code>.</p><h2 id="_2-prerequisites" tabindex="-1"><a class="header-anchor" href="#_2-prerequisites"><span>2. Prerequisites</span></a></h2><pre><code>.NET SDK Version &gt;= 5.0
.NET Framework &gt;= 4.6.1
</code></pre><h2 id="_3-how-to-use-the-client-quick-start" tabindex="-1"><a class="header-anchor" href="#_3-how-to-use-the-client-quick-start"><span>3. How to Use the Client (Quick Start)</span></a></h2><p>Users can quickly get started by referring to the use cases under the Apache-IoTDB-Client-CSharp-UserCase directory. These use cases serve as a useful resource for getting familiar with the client&#39;s functionality and capabilities.</p><p>For those who wish to delve deeper into the client&#39;s usage and explore more advanced features, the samples directory contains additional code samples.</p><h2 id="_4-developer-environment-requirements-for-iotdb-client-csharp" tabindex="-1"><a class="header-anchor" href="#_4-developer-environment-requirements-for-iotdb-client-csharp"><span>4. Developer environment requirements for iotdb-client-csharp</span></a></h2><div class="language- line-numbers-mode" data-highlighter="shiki" data-ext="" data-title="" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span>.NET SDK Version &gt;= 5.0</span></span>
<span class="line"><span>.NET Framework &gt;= 4.6.1</span></span>
<span class="line"><span>ApacheThrift &gt;= 0.14.1</span></span>
<span class="line"><span>NLog &gt;= 4.7.9</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></div><h3 id="_4-1-os" tabindex="-1"><a class="header-anchor" href="#_4-1-os"><span>4.1 OS</span></a></h3><ul><li>Linux, Macos or other unix-like OS</li><li>Windows+bash(WSL, cygwin, Git Bash)</li></ul><h3 id="_4-2-command-line-tools" tabindex="-1"><a class="header-anchor" href="#_4-2-command-line-tools"><span>4.2 Command Line Tools</span></a></h3><ul><li>dotnet CLI</li><li>Thrift</li></ul><h2 id="_5-basic-interface-description" tabindex="-1"><a class="header-anchor" href="#_5-basic-interface-description"><span>5. Basic interface description</span></a></h2><p>The Session interface is semantically identical to other language clients</p><div class="language-csharp line-numbers-mode" data-highlighter="shiki" data-ext="csharp" data-title="csharp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#7F848E;font-style:italic;">// Parameters</span></span>
<span class="line"><span style="color:#C678DD;">string</span><span style="color:#E06C75;"> host</span><span style="color:#56B6C2;"> =</span><span style="color:#98C379;"> &quot;localhost&quot;</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">int</span><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:#C678DD;">int</span><span style="color:#E06C75;"> pool_size</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 2</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Init Session</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> session_pool</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;">pool_size</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Open Session</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</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:#7F848E;font-style:italic;">// Create TimeSeries </span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">CreateTimeSeries</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;root.test_group.test_device.ts1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">TEXT</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PLAIN</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">Compressor</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">UNCOMPRESSED</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">CreateTimeSeries</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;root.test_group.test_device.ts2&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">BOOLEAN</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PLAIN</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">Compressor</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">UNCOMPRESSED</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">CreateTimeSeries</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;root.test_group.test_device.ts3&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSDataType</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">INT32</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">TSEncoding</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">PLAIN</span><span style="color:#ABB2BF;">, </span><span style="color:#E5C07B;">Compressor</span><span style="color:#ABB2BF;">.</span><span style="color:#E5C07B;">UNCOMPRESSED</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Insert Record</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> measures</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#ABB2BF;">&gt;{</span><span style="color:#98C379;">&quot;ts1&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;ts2&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#98C379;">&quot;ts3&quot;</span><span style="color:#ABB2BF;">};</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> values</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt; { </span><span style="color:#98C379;">&quot;test_text&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">true</span><span style="color:#ABB2BF;">, (</span><span style="color:#C678DD;">int</span><span style="color:#ABB2BF;">)</span><span style="color:#D19A66;">123</span><span style="color:#ABB2BF;"> };</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> timestamp</span><span style="color:#56B6C2;"> =</span><span style="color:#D19A66;"> 1</span><span style="color:#ABB2BF;">;</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> rowRecord</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">RowRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#E06C75;">timestamp</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">values</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">measures</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">InsertRecordAsync</span><span style="color:#ABB2BF;">(</span><span style="color:#98C379;">&quot;root.test_group.test_device&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">rowRecord</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"></span>
<span class="line"><span style="color:#7F848E;font-style:italic;">// Insert Tablet</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> timestamp_lst</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">long</span><span style="color:#ABB2BF;">&gt;{ </span><span style="color:#E06C75;">timestamp</span><span style="color:#56B6C2;"> +</span><span style="color:#D19A66;"> 1</span><span style="color:#ABB2BF;"> };</span></span>
<span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> value_lst</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">List</span><span style="color:#ABB2BF;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#ABB2BF;">&gt; {</span><span style="color:#98C379;">&quot;iotdb&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#D19A66;">true</span><span style="color:#ABB2BF;">, (</span><span style="color:#C678DD;">int</span><span style="color:#ABB2BF;">) </span><span style="color:#D19A66;">12</span><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:#98C379;">&quot;root.test_group.test_device&quot;</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">measures</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">value_lst</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">timestamp_lst</span><span style="color:#ABB2BF;">);</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">InsertTabletAsync</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 style="color:#7F848E;font-style:italic;">// Close Session</span></span>
<span class="line"><span style="color:#ABB2BF;">await </span><span style="color:#E5C07B;">session_pool</span><span style="color:#ABB2BF;">.</span><span style="color:#61AFEF;">Close</span><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></div><h2 id="_6-row-record" tabindex="-1"><a class="header-anchor" href="#_6-row-record"><span>6. <strong>Row Record</strong></span></a></h2><ul><li><p>Encapsulate and abstract the <code>record</code> data in <strong>IoTDB</strong></p></li><li><p>e.g.</p><table><thead><tr><th>timestamp</th><th>status</th><th>temperature</th></tr></thead><tbody><tr><td>1</td><td>0</td><td>20</td></tr></tbody></table></li><li><p>Construction:</p></li></ul><div class="language-csharp line-numbers-mode" data-highlighter="shiki" data-ext="csharp" data-title="csharp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> rowRecord</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#ABB2BF;"> new </span><span style="color:#E5C07B;">RowRecord</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">long</span><span style="color:#E06C75;"> timestamps</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#56B6C2;">&gt;</span><span style="color:#E06C75;"> values</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#56B6C2;">&gt;</span><span style="color:#E06C75;"> measurements</span><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></div><h3 id="_6-1-tablet" tabindex="-1"><a class="header-anchor" href="#_6-1-tablet"><span>6.1 <strong>Tablet</strong></span></a></h3><ul><li><p>A data structure similar to a table, containing several non empty data blocks of a device&#39;s rows。</p></li><li><p>e.g.</p><table><thead><tr><th>time</th><th>status</th><th>temperature</th></tr></thead><tbody><tr><td>1</td><td>0</td><td>20</td></tr><tr><td>2</td><td>0</td><td>20</td></tr><tr><td>3</td><td>3</td><td>21</td></tr></tbody></table></li><li><p>Construction:</p></li></ul><div class="language-csharp line-numbers-mode" data-highlighter="shiki" data-ext="csharp" data-title="csharp" style="background-color:#282c34;color:#abb2bf;"><pre class="shiki one-dark-pro vp-code"><code><span class="line"><span style="color:#C678DD;">var</span><span style="color:#E06C75;"> tablet</span><span style="color:#56B6C2;"> =</span><span style="color:#ABB2BF;"> </span></span>
<span class="line"><span style="color:#61AFEF;"> Tablet</span><span style="color:#ABB2BF;">(</span><span style="color:#C678DD;">string</span><span style="color:#E06C75;"> deviceId</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#C678DD;">string</span><span style="color:#56B6C2;">&gt;</span><span style="color:#E06C75;"> measurements</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#C678DD;">object</span><span style="color:#56B6C2;">&gt;&gt;</span><span style="color:#E06C75;"> values</span><span style="color:#ABB2BF;">, </span><span style="color:#E06C75;">List</span><span style="color:#56B6C2;">&lt;</span><span style="color:#C678DD;">long</span><span style="color:#56B6C2;">&gt;</span><span style="color:#E06C75;"> timestamps</span><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></div><h2 id="_7-api" tabindex="-1"><a class="header-anchor" href="#_7-api"><span>7. <strong>API</strong></span></a></h2><h3 id="_7-1-basic-api" tabindex="-1"><a class="header-anchor" href="#_7-1-basic-api"><span>7.1 <strong>Basic API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>Open</td><td>bool</td><td>open session</td><td>session_pool.Open(false)</td></tr><tr><td>Close</td><td>null</td><td>close session</td><td>session_pool.Close()</td></tr><tr><td>IsOpen</td><td>null</td><td>check if session is open</td><td>session_pool.IsOpen()</td></tr><tr><td>OpenDebugMode</td><td>LoggingConfiguration=null</td><td>open debug mode</td><td>session_pool.OpenDebugMode()</td></tr><tr><td>CloseDebugMode</td><td>null</td><td>close debug mode</td><td>session_pool.CloseDebugMode()</td></tr><tr><td>SetTimeZone</td><td>string</td><td>set time zone</td><td>session_pool.GetTimeZone()</td></tr><tr><td>GetTimeZone</td><td>null</td><td>get time zone</td><td>session_pool.GetTimeZone()</td></tr></tbody></table><h3 id="_7-2-record-api" tabindex="-1"><a class="header-anchor" href="#_7-2-record-api"><span>7.2 <strong>Record API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>InsertRecordAsync</td><td>string, RowRecord</td><td>insert single record</td><td>session_pool.InsertRecordAsync(&quot;root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE&quot;, new RowRecord(1, values, measures));</td></tr><tr><td>InsertRecordsAsync</td><td>List&lt;string&gt;, List&lt;RowRecord&gt;</td><td>insert records</td><td>session_pool.InsertRecordsAsync(device_id, rowRecords)</td></tr><tr><td>InsertRecordsOfOneDeviceAsync</td><td>string, List&lt;RowRecord&gt;</td><td>insert records of one device</td><td>session_pool.InsertRecordsOfOneDeviceAsync(device_id, rowRecords)</td></tr><tr><td>InsertRecordsOfOneDeviceSortedAsync</td><td>string, List&lt;RowRecord&gt;</td><td>insert sorted records of one device</td><td>InsertRecordsOfOneDeviceSortedAsync(deviceId, sortedRowRecords);</td></tr><tr><td>TestInsertRecordAsync</td><td>string, RowRecord</td><td>test insert record</td><td>session_pool.TestInsertRecordAsync(&quot;root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE&quot;, rowRecord)</td></tr><tr><td>TestInsertRecordsAsync</td><td>List&lt;string&gt;, List&lt;RowRecord&gt;</td><td>test insert record</td><td>session_pool.TestInsertRecordsAsync(device_id, rowRecords)</td></tr></tbody></table><h3 id="_7-3-tablet-api" tabindex="-1"><a class="header-anchor" href="#_7-3-tablet-api"><span>7.3 <strong>Tablet API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>InsertTabletAsync</td><td>Tablet</td><td>insert single tablet</td><td>session_pool.InsertTabletAsync(tablet)</td></tr><tr><td>InsertTabletsAsync</td><td>List&lt;Tablet&gt;</td><td>insert tablets</td><td>session_pool.InsertTabletsAsync(tablets)</td></tr><tr><td>TestInsertTabletAsync</td><td>Tablet</td><td>test insert tablet</td><td>session_pool.TestInsertTabletAsync(tablet)</td></tr><tr><td>TestInsertTabletsAsync</td><td>List&lt;Tablet&gt;</td><td>test insert tablets</td><td>session_pool.TestInsertTabletsAsync(tablets)</td></tr></tbody></table><h3 id="_7-4-sql-api" tabindex="-1"><a class="header-anchor" href="#_7-4-sql-api"><span>7.4 <strong>SQL API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>ExecuteQueryStatementAsync</td><td>string</td><td>execute sql query statement</td><td>session_pool.ExecuteQueryStatementAsync(&quot;select * from root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE where time&lt;15&quot;);</td></tr><tr><td>ExecuteNonQueryStatementAsync</td><td>string</td><td>execute sql nonquery statement</td><td>session_pool.ExecuteNonQueryStatementAsync( &quot;create timeseries root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE.status with datatype=BOOLEAN,encoding=PLAIN&quot;)</td></tr></tbody></table><h3 id="_7-5-scheam-api" tabindex="-1"><a class="header-anchor" href="#_7-5-scheam-api"><span>7.5 <strong>Scheam API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>SetStorageGroup</td><td>string</td><td>set storage group</td><td>session_pool.SetStorageGroup(&quot;root.97209_TEST_CSHARP_CLIENT_GROUP_01&quot;)</td></tr><tr><td>CreateTimeSeries</td><td>string, TSDataType, TSEncoding, Compressor</td><td>create time series</td><td>session_pool.InsertTabletsAsync(tablets)</td></tr><tr><td>DeleteStorageGroupAsync</td><td>string</td><td>delete single storage group</td><td>session_pool.DeleteStorageGroupAsync(&quot;root.97209_TEST_CSHARP_CLIENT_GROUP_01&quot;)</td></tr><tr><td>DeleteStorageGroupsAsync</td><td>List&lt;string&gt;</td><td>delete storage group</td><td>session_pool.DeleteStorageGroupAsync(&quot;root.97209_TEST_CSHARP_CLIENT_GROUP&quot;)</td></tr><tr><td>CreateMultiTimeSeriesAsync</td><td>List&lt;string&gt;, List&lt;TSDataType&gt; , List&lt;TSEncoding&gt; , List&lt;Compressor&gt;</td><td>create multi time series</td><td>session_pool.CreateMultiTimeSeriesAsync(ts_path_lst, data_type_lst, encoding_lst, compressor_lst);</td></tr><tr><td>DeleteTimeSeriesAsync</td><td>List&lt;string&gt;</td><td>delete time series</td><td></td></tr><tr><td>DeleteTimeSeriesAsync</td><td>string</td><td>delete time series</td><td></td></tr><tr><td>DeleteDataAsync</td><td>List&lt;string&gt;, long, long</td><td>delete data</td><td>session_pool.DeleteDataAsync(ts_path_lst, 2, 3)</td></tr></tbody></table><h3 id="_7-6-other-api" tabindex="-1"><a class="header-anchor" href="#_7-6-other-api"><span>7.6 <strong>Other API</strong></span></a></h3><table><thead><tr><th>api name</th><th>parameters</th><th>notes</th><th>use example</th></tr></thead><tbody><tr><td>CheckTimeSeriesExistsAsync</td><td>string</td><td>check if time series exists</td><td>session_pool.CheckTimeSeriesExistsAsync(time series)</td></tr></tbody></table><p><a href="https://github.com/apache/iotdb-client-csharp/tree/main/samples/Apache.IoTDB.Samples" target="_blank" rel="noopener noreferrer">e.g.</a></p><h2 id="_8-sessionpool" tabindex="-1"><a class="header-anchor" href="#_8-sessionpool"><span>8. SessionPool</span></a></h2><p>To implement concurrent client requests, we provide a <code>SessionPool</code> for the native interface. Since <code>SessionPool</code> itself is a superset of <code>Session</code>, when <code>SessionPool</code> is a When the <code>pool_size</code> parameter is set to 1, it reverts to the original <code>Session</code></p><p>We use the <code>ConcurrentQueue</code> data structure to encapsulate a client queue to maintain multiple connections with the server. When the <code>Open()</code> interface is called, a specified number of clients are created in the queue, and synchronous access to the queue is achieved through the <code>System.Threading.Monitor</code> class.</p><p>When a request occurs, it will try to find an idle client connection from the Connection pool. If there is no idle connection, the program will need to wait until there is an idle connection</p><p>When a connection is used up, it will automatically return to the pool and wait for the next time it is used up</p>`,45)]))}const i=e(o,[["render",l],["__file","Programming-CSharp-Native-API.html.vue"]]),c=JSON.parse('{"path":"/UserGuide/latest/API/Programming-CSharp-Native-API.html","title":"C# Native API","lang":"en-US","frontmatter":{"description":"C# Native API 1. Installation 1.1 Install from NuGet Package We have prepared Nuget Package for C# users. Users can directly install the client through .NET CLI. The link of our...","head":[["link",{"rel":"alternate","hreflang":"zh-cn","href":"https://iotdb.apache.org/zh/UserGuide/latest/API/Programming-CSharp-Native-API.html"}],["meta",{"property":"og:url","content":"https://iotdb.apache.org/UserGuide/latest/API/Programming-CSharp-Native-API.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. Installation 1.1 Install from NuGet Package We have prepared Nuget Package for C# users. Users can directly install the client through .NET CLI. The link of our..."}],["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":"2025-02-27T13:20:35.000Z"}],["meta",{"property":"article:modified_time","content":"2025-02-27T13:20:35.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"C# Native API\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-02-27T13:20:35.000Z\\",\\"author\\":[]}"]]},"headers":[{"level":2,"title":"1. Installation","slug":"_1-installation","link":"#_1-installation","children":[{"level":3,"title":"1.1 Install from NuGet Package","slug":"_1-1-install-from-nuget-package","link":"#_1-1-install-from-nuget-package","children":[]}]},{"level":2,"title":"2. Prerequisites","slug":"_2-prerequisites","link":"#_2-prerequisites","children":[]},{"level":2,"title":"3. How to Use the Client (Quick Start)","slug":"_3-how-to-use-the-client-quick-start","link":"#_3-how-to-use-the-client-quick-start","children":[]},{"level":2,"title":"4. Developer environment requirements for iotdb-client-csharp","slug":"_4-developer-environment-requirements-for-iotdb-client-csharp","link":"#_4-developer-environment-requirements-for-iotdb-client-csharp","children":[{"level":3,"title":"4.1 OS","slug":"_4-1-os","link":"#_4-1-os","children":[]},{"level":3,"title":"4.2 Command Line Tools","slug":"_4-2-command-line-tools","link":"#_4-2-command-line-tools","children":[]}]},{"level":2,"title":"5. Basic interface description","slug":"_5-basic-interface-description","link":"#_5-basic-interface-description","children":[]},{"level":2,"title":"6. Row Record","slug":"_6-row-record","link":"#_6-row-record","children":[{"level":3,"title":"6.1 Tablet","slug":"_6-1-tablet","link":"#_6-1-tablet","children":[]}]},{"level":2,"title":"7. API","slug":"_7-api","link":"#_7-api","children":[{"level":3,"title":"7.1 Basic API","slug":"_7-1-basic-api","link":"#_7-1-basic-api","children":[]},{"level":3,"title":"7.2 Record API","slug":"_7-2-record-api","link":"#_7-2-record-api","children":[]},{"level":3,"title":"7.3 Tablet API","slug":"_7-3-tablet-api","link":"#_7-3-tablet-api","children":[]},{"level":3,"title":"7.4 SQL API","slug":"_7-4-sql-api","link":"#_7-4-sql-api","children":[]},{"level":3,"title":"7.5 Scheam API","slug":"_7-5-scheam-api","link":"#_7-5-scheam-api","children":[]},{"level":3,"title":"7.6 Other API","slug":"_7-6-other-api","link":"#_7-6-other-api","children":[]}]},{"level":2,"title":"8. SessionPool","slug":"_8-sessionpool","link":"#_8-sessionpool","children":[]}],"git":{"createdTime":1691485974000,"updatedTime":1740662435000,"contributors":[{"name":"CritasWang","username":"CritasWang","email":"critas@outlook.com","commits":3,"url":"https://github.com/CritasWang"},{"name":"YuFengLiu","username":"YuFengLiu","email":"38746920+l2280212@users.noreply.github.com","commits":1,"url":"https://github.com/YuFengLiu"},{"name":"majialin","username":"majialin","email":"107627937+mal117@users.noreply.github.com","commits":1,"url":"https://github.com/majialin"},{"name":"Mister-Hope","username":"Mister-Hope","email":"mister-hope@outlook.com","commits":1,"url":"https://github.com/Mister-Hope"},{"name":"W1y1r","username":"W1y1r","email":"150988475+W1y1r@users.noreply.github.com","commits":2,"url":"https://github.com/W1y1r"},{"name":"leto-b","username":"leto-b","email":"bingqian.bai@timecho.com","commits":1,"url":"https://github.com/leto-b"}]},"readingTime":{"minutes":3.24,"words":973},"filePathRelative":"UserGuide/latest/API/Programming-CSharp-Native-API.md","localizedDate":"August 8, 2023","autoDesc":true}');export{i as comp,c as data};