TDengine C# Connector
TDengine.Connector
是 TDengine 提供的 C# 语言连接器。C# 开发人员可以通过它开发存取 TDengine 集群数据的 C# 应用软件。
.NET 版本兼容性
- .NET Framework 4.6 及以上版本。
- .NET 5.0 及以上版本。
支持的平台
- 原生连接支持的平台和 TDengine 客户端驱动支持的平台一致。
- WebSocket 连接支持所有能运行 .NET 运行时的平台。
版本历史
Connector 版本 | 主要变化 | TDengine 版本 |
---|---|---|
3.1.4 | 提升 websocket 查询和写入性能 | 3.3.2.0 及更高版本 |
3.1.3 | 支持 WebSocket 自动重连 | - |
3.1.2 | 修复 schemaless 资源释放 | - |
3.1.1 | 支持 varbinary 和 geometry 类型 | - |
3.1.0 | WebSocket 使用原生实现 | 3.2.1.0 及更高版本 |
处理异常
TDengine.Connector
会抛出异常,应用程序需要处理异常。taosc 异常类型 TDengineError
,包含错误码和错误信息,应用程序可以根据错误码和错误信息进行处理。
TDengine 其他功能模块的报错,请参考 错误码
数据类型映射
TDengine DataType | C# Type |
---|---|
TIMESTAMP | DateTime |
TINYINT | sbyte |
SMALLINT | short |
INT | int |
BIGINT | long |
TINYINT UNSIGNED | byte |
SMALLINT UNSIGNED | ushort |
INT UNSIGNED | uint |
BIGINT UNSIGNED | ulong |
FLOAT | float |
DOUBLE | double |
BOOL | bool |
BINARY | byte[] |
NCHAR | string (utf-8编码) |
JSON | byte[] |
VARBINARY | byte[] |
GEOMETRY | byte[] |
注意:JSON 类型仅在 tag 中支持。 GEOMETRY类型是 little endian 字节序的二进制数据,符合 WKB 规范。详细信息请参考 数据类型 WKB规范请参考Well-Known Binary (WKB)
示例程序汇总
示例程序源码请参考:示例程序
API 参考
ADO.NET 驱动
TDengine.Data.Client
接口实现了 ADO.NET 驱动,支持连接 TDengine 数据库, 进行数据操作。
参数规范
ConnectionStringBuilder 使用 key-value 对方式设置连接参数,key 为参数名,value 为参数值,不同参数之间使用分号 ;
分割。
例如:
"protocol=WebSocket;host=127.0.0.1;port=6041;useSSL=false"
原生连接
例如:"host=127.0.0.1;port=6030;username=root;password=taosdata;protocol=Native;db=test"
支持的参数如下:
host
:TDengine 运行实例的地址。port
:TDengine 运行实例的端口。username
:连接的用户名。password
:连接的密码。protocol
:连接的协议,可选值为 Native 或 WebSocket,默认为 Native。db
:连接的数据库。timezone
:时区,默认为本地时区。
WebSocket 连接
例如:"protocol=WebSocket;host=127.0.0.1;port=6041;useSSL=false;enableCompression=true;autoReconnect=true;reconnectIntervalMs=10;reconnectRetryCount=5"
支持的参数如下:
host
:TDengine 运行实例的地址。port
:TDengine 运行实例的端口。username
:连接的用户名。password
:连接的密码。protocol
:连接的协议,可选值为 Native 或 WebSocket,默认为 Native。db
:连接的数据库。timezone
:时区,默认为本地时区。connTimeout
:连接超时时间,默认为 1 分钟。readTimeout
:读取超时时间,默认为 5 分钟。writeTimeout
:发送超时时间,默认为 10 秒。token
:连接 TDengine cloud 的 token。useSSL
:是否使用 SSL 连接,默认为 false。enableCompression
:是否启用 WebSocket 压缩,默认为 false。autoReconnect
:是否自动重连,默认为 false。reconnectRetryCount
:重连次数,默认为 3。reconnectIntervalMs
:重连间隔毫秒时间,默认为 2000。
接口说明
ConnectionStringBuilder
类提供了连接配置字符串的解析功能。
public ConnectionStringBuilder(string connectionString)
- 接口说明:ConnectionStringBuilder 构造函数。
- 参数说明:
connectionString
:连接配置字符串。
连接功能
C# 驱动支持创建 ADO.NET 连接,返回支持 ADO.NET 标准的 DbConnection
接口的对象,还提供了 ITDengineClient
接口,扩充了一些无模式写入接口。
标准接口
ADO.NET 连接支持的标准接口如下:
-
public TDengineConnection(string connectionString)
- 接口说明:TDengineConnection 构造函数。
- 参数说明:
connectionString
:连接配置字符串。
- 异常:格式错误抛出
ArgumentException
异常。
-
public void ChangeDatabase(string databaseName)
- 接口说明:切换数据库。
- 参数说明:
databaseName
:数据库名。
- 异常:执行失败抛出
TDengineError
异常。
-
public void Close()
- 接口说明:关闭连接。
-
public void Open()
- 接口说明:打开连接。
- 异常:打开失败抛出
TDengineError
异常,WebSocket 连接可能存在网络异常须注意处理。
-
public string ServerVersion
- 接口说明:返回服务器版本。
- 返回值:服务器版本字符串。
- 异常:执行失败抛出
TDengineError
异常。
-
public string DataSource
- 接口说明:返回数据源。
- 返回值:创建连接 host 配置。
-
public string Database
- 接口说明:返回连接数据库。
- 返回值:创建连接 db 配置。
-
public TDengineCommand(TDengineConnection connection)
- 接口说明:TDengineCommand 构造函数。
- 参数说明:
connection
:TDengineConnection 对象。
- 异常:执行失败抛出
TDengineError
异常。
-
public void Prepare()
- 接口说明:检查连接和命令文本,并准备命令执行。
- 异常:未执行 open 或未设置 CommandText 抛出
InvalidOperationException
异常。
-
public string CommandText
- 接口说明:获取或设置命令文本。
- 返回值:命令文本。
-
public new virtual TDengineParameterCollection Parameters
- 接口说明:获取参数集合。
- 返回 值:TDengineParameterCollection 对象。
无模式写入
-
public static ITDengineClient Open(ConnectionStringBuilder builder)
- 接口说明:打开连接。
- 参数说明:
builder
:连接配置。
- 返回值:ITDengineClient 接口。
- 异常:打开失败抛出
TDengineError
异常,WebSocket 连接可能存在网络异常须注意处理。
-
void SchemalessInsert(string[] lines, TDengineSchemalessProtocol protocol,TDengineSchemalessPrecision precision, int ttl, long reqId)
- 接口说明:无模式写入。
- 参数说明:
lines
:数据行数组。protocol
:数据协议,支持协议:TSDB_SML_LINE_PROTOCOL = 1
TSDB_SML_TELNET_PROTOCOL = 2
TSDB_SML_JSON_PROTOCOL = 3
。precision
:时间精度,支持配置:TSDB_SML_TIMESTAMP_NOT_CONFIGURED = 0
TSDB_SML_TIMESTAMP_HOURS = 1
TSDB_SML_TIMESTAMP_MINUTES = 2
TSDB_SML_TIMESTAMP_SECONDS = 3
TSDB_SML_TIMESTAMP_MILLI_SECONDS = 4
TSDB_SML_TIMESTAMP_MICRO_SECONDS = 5
TSDB_SML_TIMESTAMP_NANO_SECONDS = 6
。ttl
:数据过期时间,0表示不配置。reqId
:请求 ID。
- 异常:执行失败抛出
TDengineError
异常。
执行 SQL
C# 驱动提供了符合 ADO.NET 标准的 DbCommand
接口,支持以下功能:
- 执行 SQL 语句:执行静态 SQL 语句,并返回其生成的结果对象。
- 查询执行:可以执行返回数据集的查询(
SELECT
语句)。 - 更新执行:可以执行影响行数的 SQL 语句,如
INSERT
、UPDATE
、DELETE
等。 - 获取结果:可以获取查询执行后返回的结果集(
ResultSet
对象),并遍历查询返回的数据。 - 获取更新计数:对于非查询 SQL 语句,可以获取执行后影响的行数。
- 关闭资源:提供了关闭的方法,以释放数据库资源。
另外 C# 驱动还提供了用于请求链路跟踪的扩展接口。
标准接口
-
public int ExecuteNonQuery()
- 接口说明:执行 SQL 语句,返回受影响的行数。
- 返回值:受影响的行数。
- 异常:执行失败抛出
TDengineError
异常。
-
public object ExecuteScalar()
- 接口说明:执行查询,并返回查询结果的第一行第一列。
- 返回值:查询结果的第一行第一列。
- 异常:执行失败抛出
TDengineError
异常。
-
public DbDataReader ExecuteReader()
- 接口说明:执行查询,并返回查询结果的数据读取器。
- 返回值:查询结果的数据读取器。
- 异常:执行失败抛出
TDengineError
异常。
-
public void Dispose();
- 接口说明:释放资源。
扩展接口
扩展接口主要用于请求链路跟踪。
-
IRows Query(string query, long reqId)
- 接口说明:执行查询,返回查询结果。
- 参数说明:
query
:查询语句。reqId
:请求 ID。
- 返回值:查询结果。
- 异常:执行失败抛出
TDengineError
异常。
-
long Exec(string query, long reqId)
- 接口说明:执行 SQL 语句。
- 参数说明:
query
:SQL 语句。reqId
:请求 ID。
- 返回值:受影响的行数。
- 异常:执行失败抛出
TDengineError
异常。
结果获取
C# 驱动提供了符合 ADO.NET 标准的 DbDataReader
接口,提供了用于读取结果集中元数据和数据的方法。