csharp.mdx 7.5 KB
Newer Older
B
Bo Ding 已提交
1
---
sangshuduo's avatar
sangshuduo 已提交
2
toc_max_heading_level: 4
B
Bo Ding 已提交
3 4
sidebar_position: 7
sidebar_label: C#
D
dingbo 已提交
5
title: C# Connector
B
Bo Ding 已提交
6 7
---

sangshuduo's avatar
sangshuduo 已提交
8 9 10
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

sangshuduo's avatar
sangshuduo 已提交
11
import Preparition from "./_preparition.mdx"
D
dingbo 已提交
12 13 14 15 16 17
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"
sangshuduo's avatar
sangshuduo 已提交
18

sangshuduo's avatar
sangshuduo 已提交
19
`TDengine.Connector` 是 TDengine 提供的 C# 语言连接器。C# 开发人员可以通过它开发存取 TDengine 集群数据的 C# 应用软件。
B
Bo Ding 已提交
20

sangshuduo's avatar
sangshuduo 已提交
21
`TDengine.Connector` 连接器支持通过 TDengine 客户端驱动(taosc)建立与 TDengine 运行实例的连接,提供数据写入、查询、订阅、schemaless 数据写入、参数绑定接口数据写入等功能 `TDengine.Connector` 目前暂未提供 REST 连接方式,用户可以参考 [REST API](/reference/rest-api/) 文档自行编写。
B
Bo Ding 已提交
22

sangshuduo's avatar
sangshuduo 已提交
23
本文介绍如何在 Linux 或 Windows 环境中安装 `TDengine.Connector`,并通过 `TDengine.Connector` 连接 TDengine 集群,进行数据写入、查询等基本操作。
B
Bo Ding 已提交
24

sangshuduo's avatar
sangshuduo 已提交
25
`TDengine.Connector` 的源码托管在 [GitHub](https://github.com/taosdata/taos-connector-dotnet)。
sangshuduo's avatar
sangshuduo 已提交
26

27
## 支持的平台
B
Bo Ding 已提交
28

陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
29
支持的平台和 TDengine 客户端驱动支持的平台一致。
B
Bo Ding 已提交
30

31
## 版本支持
B
Bo Ding 已提交
32

sangshuduo's avatar
sangshuduo 已提交
33
请参考[版本支持列表](/reference/connector#版本支持)
B
Bo Ding 已提交
34

sangshuduo's avatar
sangshuduo 已提交
35
## 支持的功能特性
36

37
1. 连接管理
sangshuduo's avatar
sangshuduo 已提交
38 39
2. 普通查询
3. 连续查询
40
4. 参数绑定
sangshuduo's avatar
sangshuduo 已提交
41 42
5. 订阅功能
6. Schemaless
B
Bo Ding 已提交
43

44
## 安装步骤
B
Bo Ding 已提交
45

sangshuduo's avatar
sangshuduo 已提交
46 47 48
### 安装前准备

* 安装 [.NET SDK](https://dotnet.microsoft.com/download)
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
49
* [Nuget 客户端](https://docs.microsoft.com/en-us/nuget/install-nuget-client-tools) (可选安装)
陶建辉(Jeff)'s avatar
陶建辉(Jeff) 已提交
50
* 安装 TDengine 客户端驱动,具体步骤请参考[安装客户端驱动](/reference/connector#安装客户端驱动)
51 52 53

### 使用 dotnet CLI 安装

sangshuduo's avatar
sangshuduo 已提交
54 55
<Tabs defaultValue="CLI">
<TabItem value="CLI" label="使用 dotnet CLI 获取 C# 驱动">
56

sangshuduo's avatar
sangshuduo 已提交
57
可以在当前 .NET 项目的路径下,通过 dotnet 命令引用 Nuget 中发布的 `TDengine.Connector` 到当前项目。
58 59 60

``` bash
dotnet add package TDengine.Connector
B
Bo Ding 已提交
61 62
```

sangshuduo's avatar
sangshuduo 已提交
63 64
</TabItem>
<TabItem value="source" label="使用源码获取 C# 驱动">
65

66
可以[下载源码](https://github.com/taosdata/taos-connector-dotnet),直接引用 TDengine.Connector 库
67 68

```bash
69 70 71
git clone -b develop https://github.com/taosdata/taos-connector-dotnet
cd taos-connector-dotnet
cp -r src/ myProject
72 73

cd myProject
74
dotnet add myProject.csproj reference TDengineDriver/TDengineDriver.csproj
75
```
sangshuduo's avatar
sangshuduo 已提交
76 77
</TabItem>
</Tabs>
78 79 80 81 82 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

## 建立连接

``` C#
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();
        }
    }
}

```
B
Bo Ding 已提交
113

114
## 使用示例
B
Bo Ding 已提交
115

sangshuduo's avatar
sangshuduo 已提交
116 117
### 写入数据

sangshuduo's avatar
sangshuduo 已提交
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
#### SQL 写入

<CSInsert />

#### InfluxDB 行协议写入

<CSInfluxLine />

#### OpenTSDB Telnet 行协议写入

<CSOpenTSDBTelnet />

#### OpenTSDB JSON 行协议写入

<CSOpenTSDBJson />

### 查询数据

sangshuduo's avatar
sangshuduo 已提交
136 137
#### 同步查询

sangshuduo's avatar
sangshuduo 已提交
138 139
<CSQuery />

sangshuduo's avatar
sangshuduo 已提交
140
#### 异步查询
sangshuduo's avatar
sangshuduo 已提交
141 142 143

<CSAsyncQuery />

sangshuduo's avatar
sangshuduo 已提交
144
### 更多示例程序
sangshuduo's avatar
sangshuduo 已提交
145

146 147 148 149 150 151 152 153 154
|示例程序                                                                                                               | 示例程序描述                                       |
|--------------------------------------------------------------------------------------------------------------------|--------------------------------------------|
| [C#checker](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/C%23checker)                           | 使用 TDengine.Connector 可以通过 help 命令中提供的参数,测试C# Driver的同步写入和查询    |
| [TDengineTest](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/TDengineTest)                       | 使用 TDengine.Connector 实现的简单写入和查询的示例 |
| [insertCn](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/insertCn)                               | 使用 TDengine.Connector 实现的写入和查询中文字符的示例    |
| [jsonTag](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/jsonTag)                                 | 使用 TDengine.Connector 实现的写入和查询 json tag 类型数据的示例 |
| [stmt](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/stmt)                                       | 使用 TDengine.Connector 实现的参数绑定的示例 |
| [schemaless](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/schemaless)                           | 使用 TDengine.Connector 实现的使用 schemaless 写入的示例 |
| [benchmark](https://github.com/taosdata/TDengine/tree/develop/examples/C%23/taosdemo)                              | 使用 TDengine.Connector 实现的简易 Benchmark |
155 156
| [async   query](https://github.com/taosdata/taos-connector-dotnet/blob/develop/examples/QueryAsyncSample.cs) | 使用 TDengine.Connector 实现的异步查询的示例 |
| [subscribe](https://github.com/taosdata/taos-connector-dotnet/blob/develop/examples/SubscribeSample.cs)      | 使用 TDengine.Connector 实现的订阅数据的示例 |
B
Bo Ding 已提交
157

158
## 重要更新记录
B
Bo Ding 已提交
159

160 161
| TDengine.Connector | 说明                           |
|--------------------|--------------------------------|
162
|        1.0.7       | 修复TDengine.Query()内存泄露的bug。 |
163
|        1.0.6       | 修复 schemaless 在 1.0.4 和 1.0.5 中失效 bug。 |
164 165 166 167
|        1.0.5       | 修复 Windows 同步查询中文报错 bug。   |
|        1.0.4       | 新增异步查询,订阅等功能。修复绑定参数 bug。    |
|        1.0.3       | 新增参数绑定、schemaless、 json tag等功能。 |
|        1.0.2       | 新增连接管理、同步查询、错误信息等功能。   |
B
Bo Ding 已提交
168

169
## 其他说明
B
Bo Ding 已提交
170

171
### 第三方驱动
B
Bo Ding 已提交
172

sangshuduo's avatar
sangshuduo 已提交
173
`Maikebing.Data.Taos` 是一个 TDengine 的 ADO.NET 连接器,支持 Linux,Windows 平台。该连接器由社区贡献者`麦壳饼@@maikebing` 提供,具体请参考:
B
Bo Ding 已提交
174

175 176
* 接口下载:<https://github.com/maikebing/Maikebing.EntityFrameworkCore.Taos>
* 用法说明:<https://www.taosdata.com/blog/2020/11/02/1901.html>
B
Bo Ding 已提交
177

178
## 常见问题
B
Bo Ding 已提交
179

sangshuduo's avatar
sangshuduo 已提交
180
1. "Unable to establish connection","Unable to resolve FQDN"
B
Bo Ding 已提交
181

sangshuduo's avatar
sangshuduo 已提交
182
  一般是因为 FQDN 配置不正确。可以参考[如何彻底搞懂 TDengine 的 FQDN](https://www.taosdata.com/blog/2021/07/29/2741.html)解决。
B
Bo Ding 已提交
183

sangshuduo's avatar
sangshuduo 已提交
184
2. Unhandled exception. System.DllNotFoundException: Unable to load DLL 'taos' or one of its dependencies: 找不到指定的模块。
B
Bo Ding 已提交
185

sangshuduo's avatar
sangshuduo 已提交
186
  一般是因为程序没有找到依赖的客户端驱动。解决方法为:Windows 下可以将 `C:\TDengine\driver\taos.dll` 拷贝到 `C:\Windows\System32\ ` 目录下,Linux 下建立如下软链接 `ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so` 即可。
sangshuduo's avatar
sangshuduo 已提交
187

188
## API 参考
sangshuduo's avatar
sangshuduo 已提交
189

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