数据库采集 - Snet Docs

Database 协议驱动

包: Snet.DB | 类: DBOperate | 类型数量: 6

通过 ADO.NET 提供与关系型数据库(SQL Server、MySQL、Oracle、SQLite)的连接,支持在 DAQ 框架内进行直接的数据库读写操作。

安装

dotnet add package Snet.DB

快速入门

using Snet.DB;

var op = new DBOperate(new DBData.Basics
{
    ConnectStr = "Data Source=192.168.1.100;Initial Catalog=MyDB;User ID=sa;Password=xxx"
});

var address = new Address(new List<AddressDetails>
{
    new("读数", "SELECT TOP 10 * FROM SensorData", DataType.String),
    new("读数2", "", DataType.String)
});
var result = await op.ReadAsync(address);
if (result.Status)
{
    var data = result.GetSource<ConcurrentDictionary<string, AddressValue>>();
    foreach (var kv in data)
        Console.WriteLine($"{kv.Key} = {kv.Value.ResultValue}");
}
else
{
    Console.WriteLine($"读取失败: {result.Message}");
}

// 订阅之前 绑定数据事件
op.OnDataEventAsync += async (sender, e) =>
{
    if (e.Status)
    {
        var data = e.GetSource<ConcurrentDictionary<string, AddressValue>>();
        foreach (var kv in data)
            Console.WriteLine($"{kv.Key} = {kv.Value.ResultValue}");
    }
    else
    {
        Console.WriteLine($"{e.Message}");
    }
};

var subAddr = new Address(new List<AddressDetails>
{
    new("读数", "SELECT TOP 10 * FROM SensorData", DataType.String)
});
await op.SubscribeAsync(subAddr);

// 后续:取消订阅
// await op.UnSubscribeAsync(subAddr);

await op.DisposeAsync();

配置参数

参数 类型 默认值 说明
ConnectStr string 数据库连接字符串
DBType enum SQLite 数据库类型:SqlServer, MySql, Oracle, SQLite
HandlerType enum Daq 处理器类型:Default, Daq

支持的数据库类型(DBType 枚举)

类型 默认端口 说明
SqlServer 1433 通过 System.Data.SqlClient 连接 Microsoft SQL Server
MySql 3306 通过 MySqlConnector 连接 MySQL
Oracle 1521 Oracle 数据库
SQLite 本地文件型数据库

处理器类型

处理器 说明
Default 标准 ADO.NET 处理器
Daq DAQ 框架集成处理器

支持操作

操作 方法
连接 OnAsync()
断开 OffAsync()
读取 ReadAsync(address)
写入 WriteAsync(values)
订阅 SubscribeAsync(address)

参见