IoTDB 入门教程 实战篇④——C#示例(开源)

文章目录

一、前文

IoTDB入门教程------导读
本文详细阐述了如何通过一个C#项目成功连接到IoTDB时序数据库,进而展示了如何向该数据库高效地写入数据以及执行精确的数据查询操作。
此示例旨在为读者提供一个清晰、实用的指导,以便他们在自己的项目中实现与IoTDB的交互。
此示例开源地址:小康师兄/IoTDB示例

二、新建C#项目

  • 创建新项目Windows窗体应用(.Net Framework)

  • 运行

三、NuGet安装

  • 工具--->NuGet 包管理器--->管理解决方案的 NuGet 程序包
  • 搜索IoTDB,并安装

四、示例源码

此示例开源地址:小康师兄/IoTDB示例
https://gitee.com/weijian.kang/IoTDB-Example/tree/master/Csharp-Example

  • UI布局:两个Button和一个ListView

  • 初始化与连接

csharp 复制代码
private async void Form1_Load(object sender, EventArgs e)
{
    // listView初始化
    this.listView1.Columns.Clear();
    this.listView1.Columns.Add("时间", 130);
    this.listView1.Columns.Add("状态", 60);

    // 初始化session
    sessionPool = new SessionPool("47.122.63.169", 6667, 2);

    // 开启session
    await sessionPool.Open(false);
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // 关闭连接
    sessionPool.Close();
}
  • 写入数据
csharp 复制代码
private async void insertBtn_Click(object sender, EventArgs e)
{
    var measures = new List<string> { "status" };
    var values = new List<object> { 123 };
    var rowRecord = new RowRecord(DateTime.Now, values, measures);
    var result = await sessionPool.InsertRecordAsync("root.test.test", rowRecord);
    Console.WriteLine("insert result="+result);
}
  • 查询数据
csharp 复制代码
private async void queryBtn_Click(object sender, EventArgs e)
{
    var result = await sessionPool.ExecuteQueryStatementAsync("select status from root.test.test order by time desc");
    Console.WriteLine("query done, rowCount="+result.RowCount);
    result.ShowTableNames();

    //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 
    this.listView1.BeginUpdate();   
    this.listView1.Items.Clear();
    List<ListViewItem> items = new List<ListViewItem>();

    for (int i=0; i< result.RowCount; i++)
    {
        RowRecord rowRecord = result.Next();
        string[] rows = new string[2];
        rows[0] = DateTimeOffset.FromUnixTimeMilliseconds(rowRecord.Timestamps).LocalDateTime.ToString("yyyy-MM-dd HH:mm:ss");
        rows[1] = rowRecord.Values[0].ToString();
        items.Add(new ListViewItem(rows));
    }

    this.listView1.Items.AddRange(items.ToArray());
    //结束数据处理,UI界面一次性绘制。
    this.listView1.EndUpdate();  
}
  • 运行截图

五、查询数据

  • 再次查询数据,同步验证一下
sql 复制代码
IoTDB> select status from root.test.test order by time desc
+-----------------------------+---------------------+
|                         Time|root.test.test.status|
+-----------------------------+---------------------+
|2024-07-30T00:20:37.335+08:00|                123.0|
|2024-07-29T17:44:48.752+08:00|                 88.0|
|2024-07-28T20:12:49.883+08:00|                 88.0|
|2024-07-28T20:11:41.161+08:00|                 88.0|
|2024-07-28T19:57:38.855+08:00|                 88.0|
|2024-07-27T16:44:06.000+08:00|                 66.0|
|2024-07-21T08:34:30.341+08:00|                 33.0|
|2024-07-21T08:34:28.155+08:00|                 22.0|
|2024-07-21T08:34:25.675+08:00|                 11.0|
|2024-07-21T08:34:23.284+08:00|                  3.0|
|2024-07-21T08:34:21.513+08:00|                  2.0|
|2024-07-21T08:34:04.378+08:00|                  1.0|
|1970-01-21T06:21:09.846+08:00|                 55.0|
|1970-01-01T08:00:00.534+08:00|                123.0|
|1970-01-01T08:00:00.001+08:00|                123.0|
+-----------------------------+---------------------+
Total line number = 15
It costs 0.084s

六、参考

C# 原生接口| IoTDB Website

觉得好,就一键三连呗(点赞+收藏+关注)

相关推荐
AI服务老曹几秒前
成为一种国家战略范畴的新基建的智慧园区开源了
运维·人工智能·学习·开源·能源
zkmall1 小时前
阿里云 OSS 在 ZKmall开源商城的应用实践
阿里云·开源·云计算
2301_787552871 小时前
aidigu开源微博项目程序,PHP开发的开源微博系统,自媒体个人创业、网盘推广首先
开发语言·开源·php·数据库开发·媒体
我不是程序猿儿1 小时前
【C#】一种优雅的基于winform的串口通信管理
stm32·单片机·c#
OpenAnolis小助手5 小时前
龙蜥社区荣获 OS2ATC 2025 “最具影响力开源创新贡献奖”
开源·操作系统·龙蜥社区·龙蜥·openanolis·行业认可
东方佑6 小时前
将JSON数据还原为PPT文件:Python自动化生成工具详解
开源
向宇it6 小时前
【unity游戏开发入门到精通——动画篇】Animator反向动力学(IK)
开发语言·unity·c#·编辑器·游戏引擎
蚝油菜花7 小时前
月之暗面开源16B轻量级多模态视觉语言模型!Kimi-VL:推理仅需激活2.8B,支持128K上下文与高分辨率输入
人工智能·开源
蚝油菜花7 小时前
传统OCR集体阵亡!Versatile-OCR-Program:开源多语言OCR工具,精准解析表格和数学公式等复杂结构
人工智能·开源
蚝油菜花7 小时前
一键生成魔童哪吒数字人!FantasyTalking:阿里北邮联手打造静态肖像生成可控数字人框架
人工智能·开源