09-csharp.mdx 7.4 KB
Newer Older
1 2 3 4 5 6 7 8 9
---
toc_max_heading_level: 4
sidebar_label: C#
title: C# Connector
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

D
danielclow 已提交
10
import Preparition from "./_preparition.mdx"
11 12 13 14 15 16 17 18 19
import CSInsert from "../../07-develop/03-insert-data/_cs_sql.mdx"
import CSInfluxLine from "../../07-develop/03-insert-data/_cs_line.mdx"
import CSOpenTSDBTelnet from "../../07-develop/03-insert-data/_cs_opts_telnet.mdx"
import CSOpenTSDBJson from "../../07-develop/03-insert-data/_cs_opts_json.mdx"
import CSQuery from "../../07-develop/04-query-data/_cs.mdx"
import CSAsyncQuery from "../../07-develop/04-query-data/_cs_async.mdx"

`TDengine.Connector` is a C# language connector provided by TDengine that allows C# developers to develop C# applications that access TDengine cluster data.

sangshuduo's avatar
sangshuduo 已提交
20
The `TDengine.Connector` connector supports connect to TDengine instances via the TDengine client driver (taosc), providing data writing, querying, subscription, schemaless writing, bind interface, etc. The `TDengine.Connector` currently does not provide a REST connection interface. Developers can write their RESTful application by referring to the [REST API](/reference/rest-api/) documentation.
21 22 23

This article describes how to install `TDengine.Connector` in a Linux or Windows environment and connect to TDengine clusters via `TDengine.Connector` to perform basic operations such as data writing and querying.

D
danielclow 已提交
24 25 26
Note: TDengine Connector 3.x is not compatible with TDengine 2.x. In an environment with TDengine 2.x, you must use TDengine.Connector 1.x for the C# connector.

The source code of `TDengine.Connector` is hosted on [GitHub](https://github.com/taosdata/taos-connector-dotnet/tree/3.0).
27

D
danielclow 已提交
28
## Supported platforms
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

The supported platforms are the same as those supported by the TDengine client driver.

## Version support

Please refer to [version support list](/reference/connector#version-support)

## Supported features

1. Connection Management
2. General Query
3. Continuous Query
4. Parameter Binding
5. Subscription
6. Schemaless

## Installation Steps

### Pre-installation preparation

* Install the [.NET SDK](https://dotnet.microsoft.com/download)
* [Nuget Client](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) (optional installation)
D
dingbo 已提交
51
* Install TDengine client driver, please refer to [Install client driver](/reference/connector/#install-client-driver) for details
52 53 54 55 56 57 58 59

### Install via dotnet CLI

<Tabs defaultValue="CLI">
<TabItem value="CLI" label="Get C# driver using dotnet CLI">

You can reference the `TDengine.Connector` published in Nuget to the current project via the `dotnet` command under the path of the existing .NET project.

D
danielclow 已提交
60
``` bash
61 62 63 64 65 66
dotnet add package TDengine.Connector
```

</TabItem>
<TabItem value="source" label="Use source code to get C# driver">

D
danielclow 已提交
67
You can [download the source code](https://github.com/taosdata/taos-connector-dotnet/tree/3.0) and directly reference the latest version of the TDengine.Connector library.
68

D
danielclow 已提交
69 70 71 72
```bash
git clone -b 3.0 https://github.com/taosdata/taos-connector-dotnet.git
cd taos-connector-dotnet
cp -r src/ myProject
73 74

cd myProject
D
danielclow 已提交
75
dotnet add exmaple.csproj reference src/TDengine.csproj
76 77 78 79
```
</TabItem>
</Tabs>

D
danielclow 已提交
80
## Establish a Connection
81

D
danielclow 已提交
82
``` C#
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
using TDengineDriver;

namespace TDengineExample
{

    internal class EstablishConnection
    {
        static void Main(String[] args)
        {
            string host = "localhost";
            short port = 6030;
            string username = "root";
            string password = "taosdata";
            string dbname = "";

            var conn = TDengine.Connect(host, username, password, dbname, port);
            if (conn == IntPtr.Zero)
            {
                Console.WriteLine("Connect to TDengine failed");
            }
            else
            {
                Console.WriteLine("Connect to TDengine success");
            }
            TDengine.Close(conn);
            TDengine.Cleanup();
        }
    }
}

```

## Usage examples

### Write data

#### SQL Write

<CSInsert />

#### InfluxDB line protocol write

<CSInfluxLine />

#### OpenTSDB Telnet line protocol write

<CSOpenTSDBTelnet />

#### OpenTSDB JSON line protocol write

<CSOpenTSDBJson />

### Query data

#### Synchronous Query

<CSQuery />

#### Asynchronous query

<CSAsyncQuery />

### More sample programs

|Sample program |Sample program description |
|--------------------------------------------------------------------------------------------------------------------|------------ --------------------------------|
D
danielclow 已提交
149 150 151 152 153 154
| [CURD](https://github.com/taosdata/taos-connector-dotnet/blob/3.0/examples/Query/Query.cs)                         | Table creation, data insertion, and query examples with TDengine.Connector    |
| [JSON Tag](https://github.com/taosdata/taos-connector-dotnet/blob/3.0/examples/JSONTag)                             | Writing and querying JSON tag data with TDengine Connector |
| [stmt](https://github.com/taosdata/taos-connector-dotnet/tree/3.0/examples/Stmt)                                   | Parameter binding with TDengine Connector |
| [schemaless](https://github.com/taosdata/taos-connector-dotnet/blob/3.0/examples/schemaless)                       | Schemaless writes with TDengine Connector |
| [async query](https://github.com/taosdata/taos-connector-dotnet/blob/3.0/examples/AsyncQuery/QueryAsync.cs) | Asynchronous queries with TDengine Connector |
| [TMQ](https://github.com/taosdata/taos-connector-dotnet/blob/3.0/examples/TMQ/TMQ.cs)      | Data subscription with TDengine Connector |
155 156 157 158 159

## Important update records

| TDengine.Connector | Description |
|--------------------|--------------------------------|
D
danielclow 已提交
160 161
|        3.0.0       | Supports TDengine 3.0.0.0. TDengine 2.x is not supported. Added `TDengine.Impl.GetData()` interface to deserialize query results. |
|        1.0.7       | Fixed TDengine.Query() memory leak. |
162
| 1.0.6 | Fix schemaless bug in 1.0.4 and 1.0.5. |
D
danielclow 已提交
163 164 165 166
| 1.0.5 | Fix Windows sync query Chinese error bug. | 1.0.4 | Fix schemaless bug.   |
| 1.0.4 | Add asynchronous query, subscription, and other functions. Fix the binding parameter bug.    |
| 1.0.3 | Add parameter binding, schemaless, JSON tag, etc. |
| 1.0.2 | Add connection management, synchronous query, error messages, etc.   |
167 168 169 170 171 172 173 174 175 176 177 178 179 180

## Other descriptions

### Third-party driver

`Taos` is an ADO.NET connector for TDengine, supporting Linux and Windows platforms. Community contributor `Maikebing@@maikebing contributes the connector`. Please refer to:

* Interface download:<https://github.com/maikebing/Maikebing.EntityFrameworkCore.Taos>
* Usage notes:<https://www.taosdata.com/blog/2020/11/02/1901.html>

## Frequently Asked Questions

1. "Unable to establish connection", "Unable to resolve FQDN"

D
danielclow 已提交
181
  Usually, it's caused by an incorrect FQDN configuration. Please refer to this section in the [FAQ](https://docs.tdengine.com/2.4/train-faq/faq/#2-how-to-handle-unable-to-establish-connection) to troubleshoot.
182

183
2. Unhandled exception. System.DllNotFoundException: Unable to load DLL 'taos' or one of its dependencies: The specified module cannot be found.
184 185 186 187 188 189

  This is usually because the program did not find the dependent client driver. The solution is to copy `C:\TDengine\driver\taos.dll` to the `C:\Windows\System32\` directory on Windows, and create the following soft link on Linux `ln -s /usr/local/taos/driver/libtaos.so.x.x .x.x /usr/lib/libtaos.so` will work.

## API Reference

[API Reference](https://docs.taosdata.com/api/connector-csharp/html/860d2ac1-dd52-39c9-e460-0829c4e5a40b.htm)