PDB.DotNetSDK 3.0.2

dotnet add package PDB.DotNetSDK --version 3.0.2
                    
NuGet\Install-Package PDB.DotNetSDK -Version 3.0.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PDB.DotNetSDK" Version="3.0.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PDB.DotNetSDK" Version="3.0.2" />
                    
Directory.Packages.props
<PackageReference Include="PDB.DotNetSDK" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PDB.DotNetSDK --version 3.0.2
                    
#r "nuget: PDB.DotNetSDK, 3.0.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PDB.DotNetSDK@3.0.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PDB.DotNetSDK&version=3.0.2
                    
Install as a Cake Addin
#tool nuget:?package=PDB.DotNetSDK&version=3.0.2
                    
Install as a Cake Tool

松果时序数据库(PinusDB)用户手册 V3.0

2020-11-20 , version 3.0

0.另一个.Net SDK

麦壳饼同学为松果时序数据库实现了一个符合ADO.NET标准的SDK并上传到nuget。 您可以选择任意一个SDK来连接松果时序数据库。
传送门:https://gitee.com/maikebing/PinusDB.Data

1.前言

概述
本文档介绍松果时序数据库(以下又称PinusDB)3.0版本的.Net SDK使用。

读者对象
本文档适用于使用松果时序数据库的开发工程师。

联系我们
如果您有任何疑问或建议,请提交Issue或发送邮件到 zhangqhn@foxmail.com

2.快速开始

在项目中引用PDB.DotNetSDK.dll程序集即可。PDB.DotNetSDK.dll 支持 .Net Framework和.Net Core。

//连接字符串
string connStr = "server=127.0.0.1;port=8105;username=sa;password=pinusdb";
//实例化连接对象
PDBConnection conn = new PDBConnection(connStr);
//打开连接
conn.Open();
//创建执行对象
PDBCommand cmd = conn.CreateCommand();
//执行查询Sql
DataTable dt = cmd.ExecuteQuery("select * from sys_table");
//关闭数据库连接
conn.Close();

3.PDBConnection类

一个PDBConnection类的实例表示一个与松果时序数据库的连接。
构造函数
PDBConnection(string connStr)
参数connStr:使用指定的数据库连接串初始化连接对象,一个典型的连接字符串如下
"server=127.0.0.1;port=8105;username=sa;password=pinusdb"
实际使用时替换相应内容即可。

方法

  • Open : 打开与松果时序数据库的连接。
  • Close : 关闭与松果时序数据库的连接。
  • CreateCommand : 使用当前的连接对象创建一个命令执行对象。
  • IsValid : 连接是否有效。

4.PDBCommand类

表示松果时序数据库执行SQL语句的对象。
构造函数
PDBCommand(PDBConnection conn)
参数conn:初始化PDBCommand类的实例。

属性
SuccessCount : 执行数据插入时,插入成功的条数。
InsertResult : 执行数据插入时,每条数据的执行结果。

方法

  • ExecuteNonQuery(string sql)
    执行没有返回值的SQL,例如:创建用户,修改用户权限,创建表,删除表,附加表,附件文件等等。

  • ExecuteNonQuery(string sql, params PDBParameter[] parms)
    使用参数执行没有返回值的SQL,变量名必须以@开头,可以包含字母、数字。

  • ExecuteInsert(string sql)
    执行插入语句,当执行多条插入语句时,其中某条插入失败时,后面的不会继续执行。
    一次调用只能对一个表执行插入,必须指定所有的列名。典型的插入语句如下: 注意:插入数据前,请先创建创建表,在表中创建对象,具体请参考用户手册:pinusdb_user_manual.md

--单条插入,插入实际的数据前需要先创建设备
INSERT INTO tab01(devid, tstamp, val01, val02)
VALUES(1, now(), true, 101)

--多条插入
INSERT INTO tab01(devid, tstamp, val01, val02)
VALUES(1, now(), true, 102),(2, now(), true, 103)
  • ExecuteInsert(string sql, params PDBParameter[] parms)
    带参数执行一条插入语句,变量名必须以@开头,可以包含字母、数字

  • ExecuteInsert(DataTable dataTable)
    将DataTable插入到松果时序数据库,表名和列名由DataTable中的表名和列名指定,列类型必须和指定表的列类型匹配。

static void TestInsertTable()
{
  //测试表结构
  //CREATE TABLE testTab(devid bigint, tstamp datetime, val01 double)
  //已创建设备, 1,2
  string connStr = "server=127.0.0.1;port=8105;username=sa;password=pinxxx";
  //注意此处,表名与松果时序数据库中的表名对应
  DataTable dt = new DataTable("testTab");
  dt.Columns.Add(new DataColumn("devid", typeof(long)));
  dt.Columns.Add(new DataColumn("tstamp", typeof(DateTime)));
  dt.Columns.Add(new DataColumn("val01", typeof(double)));

  DataRow row1 = dt.NewRow();
  row1["devid"] = 1;
  row1["tstamp"] = DateTime.Now;
  row1["val01"] = 1.1;
  dt.Rows.Add(row1);
  DataRow row2 = dt.NewRow();
  row2["devid"] = 3;
  row2["tstamp"] = DateTime.Now;
  row2["val01"] = 2.2;
  dt.Rows.Add(row2);

  using (PDBConnection conn = new PDBConnection(connStr))
  {
    conn.Open();
    PDBCommand cmd = conn.CreateCommand();
    PDBErrorCode retCode = cmd.ExecuteInsert(dt);
    if (retCode == PDBErrorCode.PdbE_OK)
    {
      Console.WriteLine("执行插入成功,成功插入{0}条数据", cmd.SuccessCount);
    }
    else
    {
      Console.WriteLine("执行插入,成功插入{0}条数据", cmd.SuccessCount);
      for(int idx = 0; idx < cmd.InsertResult.Count(); idx++)
      {
        if (cmd.InsertResult[idx] != PDBErrorCode.PdbE_OK)
        {
          Console.WriteLine("第{0}条数据,插入失败,错误信息:{1}",
            idx, PDBErrorMsg.GetErrorMsg(cmd.InsertResult[idx]));
        }
      }
    }
  }
}
  • ExecuteInsert(string tabName, DataTable dataTable)
    将DataTable插入到松果时序数据库,表名由参数tabName指定,列名由DataTable中的列名指定。其他与上个方法相同。

  • ExecuteQuery(string sql)
    执行查询SQL

  • ExecuteQuery(string sql, params PDBParameter[] parms)
    使用参数执行查询,变量名必须以@开头,可以包含字母、数字。

5. PDBParameter类

表示执行SQL语句的参数。
构造函数
PDBParameter(string parameterName, PDBType parameterType)
参数 parameterName: 参数名,以@开头,可以包含字母、数字。
参数 parameterType: 参数类型

属性
ParameterName 参数名
Value 参数值

一个简单的示例:

static void TestQuery()
{
  string connStr = "server=127.0.0.1;port=8105;username=sa;password=pinxxx";
  using (PDBConnection conn = new PDBConnection(connStr))
  {
    conn.Open();
    PDBCommand cmd = conn.CreateCommand();
    string sql = "SELECT * FROM sys_column WHERE tabname = @tabname";
    PDBParameter[] queryParams = new PDBParameter[1];
    queryParams[0] = new PDBParameter("@tabname", PDBType.String);
    queryParams[0].Value = "testTab";
    DataTable dt = cmd.ExecuteQuery(sql, queryParams);
  }
}

6. PDBErrorMsg类

用于获取错误描述信息,静态类。
静态方法
GetErrorMsg(PDBErrorCode errCode) : 根据错误码返回错误描述信息。

7. PDBType枚举

枚举类型,松果时序数据库支持的类型。
成员:

  • Bool : 布尔类型,对应.Net bool类型
  • BigInt : 8字节整型,对应.Net Long类型
  • DateTime : 时间类型,精确到毫秒,对应.Net DateTime类型
  • Double : 双精度浮点类型,对应.Net double类型
  • String : 字符串类型,UTF8编码,对应.Net string类型
  • Blob : 二进制类型,对应.Net byte[]类型

备注:松果时序数据库中的real系列类型,实际操作时当作double类型处理。

8. 实例

8.1. 使用SQL插入数据

注意:数据写入时,tstamp的值必须处于数据写入窗口内,数据写入窗口见用户手册名词解释部分。

//运行前,请确保已创建表及添加设备
//CREATE TABLE tab01(devid bigint, tstamp datetime, val01 bigint, val02 double)
//INSERT INTO sys_dev(tabname,devid) VALUES('tab01', 101),('tab01', 102)
void InsertForSQL()
{
  string connStr = "server=127.0.0.1;port=8105;username=sa;password=pinusdb";
  using(PDBConnection conn = new PDBConnection(connStr))
  {
    conn.Open();
    PDBCommand cmd = conn.CreateCommand();
    PDBErrorCode retCode = cmd.ExecuteInsert("insert into tab01(devid, tstamp, val01, val02) values(101,now(),1,2.1),(102, now(),5,21)");
    if (retCode != PDBErrorCode.PdbE_OK)
    {
      Console.WriteLine("成功条数:" + cmd.SuccessCount + " 错误信息:" + PDBErrorMsg.GetErrorMsg(retCode));
    }
    else
      Console.WriteLine("插入成功!");
  }
}

8.2. 查询数据

执行查询时,可以使用limit子句限制查询的数量,一次请求最多可以查询10000条数据,若不使用limit指定查询的数量,则默认查询1000条数据。

using (PDBConnection conn = new PDBConnection(connStr))
{
  conn.Open();
  PDBCommand cmd = conn.CreateCommand();
  DataTable data = cmd.ExecuteQuery("select * from tab01 where devid = 101");
}

using (PDBConnection conn = new PDBConnection(connStr))
{
  conn.Open();
  PDBCommand cmd = conn.CreateCommand();
  PDBParameter[] queryParam = { new PDBParameter("@devid", PDBType.BigInt) };
  queryParam[0].Value = 101;
  DataTable data = cmd.ExecuteQuery("select * from tab01 where devid = @devid");
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.0.2 114 1/7/2026