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

news2025/1/11 19:55:16

文章目录

  • 一、前文
  • 二、新建C#项目
  • 三、NuGet安装
  • 四、示例源码
  • 五、查询数据
  • 六、参考

一、前文

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
    在这里插入图片描述

  • 初始化与连接

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();
}
  • 写入数据
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);
}
  • 查询数据
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();  
}

  • 运行截图
    在这里插入图片描述

五、查询数据

  • 再次查询数据,同步验证一下
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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1959715.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ImportError: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20‘ 报错解决办法

1.查找 libstdc.so.6* find / -name libstdc.so.6*2.copy一个libstdc.so.6.0.19到/usr/lib64/下 cp /usr/lib64/libstdc.so.6 /usr/lib64/3.创建软连接 ln -sf /usr/lib64/libstdc.so.6.0.31 /usr/lib64/libstdc.so.6完毕&#xff01;

RISC-V (四)内存管理

本章目的&#xff1a; 对内存进一步的管理&#xff0c;实现动态的分配和释放。 实现page级别的内存分配和释放。 内存管理分类 -自动管理内存-栈&#xff08;stack&#xff09; -静态内存-全局变量/静态变量。放在数据段里面。 -动态管理内存-堆&#xff08;heap&#xff09;…

【Docker】LXC 容器操作实战

一、实战目的 通过 lxc 来完成容器的创建&#xff0c;体会容器并了解 docker 并不是容器的唯一实现。 自 docker 0.9 版本起&#xff0c;docker 除了继续支持 LXC 外&#xff0c;还开始引入自家的 libcontainer&#xff0c;试图打造更通用的底层容器虚拟化库。如今的 docker…

【EI稳定检索】第二届能源与化学工程国际会议(EACE 2024)

第二届能源与化学工程国际会议 2024 International Conference on Energy and Chemical Engineering 【1】会议简介 第二届能源与化学工程国际会议是一个旨在促进能源科学与化学工程领域学术交流与合作的重要平台。会议汇集了全球范围内的专家学者、研究人员及行业代表&#xf…

77.SAP ME - 数据库架构

目录 1.SAP ME的数据库 2.SAPMEINT的数据库 3.SAPMII的数据库 4.基于MSSQLSERVER或ORACLE的架构 5.基于HANA的架构 - 无ODS 1.SAP ME的数据库 WIP&#xff1a;在实时事务期间&#xff0c;SAP ME 在“在制品” (WIP) 数据库表中存储数据。ODS&#xff1a;可操作数据存储 (…

树莓派笔记22_小车:小车电机开环运动与opencv摄像头巡线

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: ​ Opencv 版本是4.5.1&#xff1a; ​ Python 版本3.7.3&#xff1a; 今日尝试搭建一台小…

车车科技合纵连横:股价今年以来跌超八成,公司看好未来市场份额

《港湾商业观察》黄懿 6月27日&#xff0c;Cheche Group Inc. (NASDAQ: CCG&#xff0c;下称“车车科技”)宣布&#xff0c;公司已与北京安鹏保险经纪有限公司&#xff08;“北京安鹏”&#xff09;建立战略合作伙伴关系。其中&#xff0c;北京安鹏是北京汽车集团有限公司&…

vllm部署的一些思考

vllm号称利用ray支持多机多卡的方式,链接如下 Distributed Inference and Serving — vLLMhttps://docs.vllm.ai/en/stable/serving/distributed_serving.html但是这种方式只是把非常大的模型如lamma 3.1 ,这个模型有405b,需要用多机多卡的方式进行分布式。 事实上,生产中…

C语言:扫雷游戏实现

一、扫雷游戏的分析和设计 扫雷游戏想必大家都玩过吧&#xff0c;初级的玩法是在一个9*9的棋盘上找到没有雷的格子&#xff0c;而今天我们就要做的就是9*9扫雷游戏的实现。 1、游戏功能和规则 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘…

Git 安装教程

1、登录git 官方网站&#xff1a;https://git-scm.com/ 点击左边的 Downloads 或者 右边标识的下载标志&#xff0c;它根据电脑操作系统自动匹配版本 Downloads for Windows 2、以 windows 为例下载对应版本 网络有时可能不大好&#xff0c;阿里镜像下载超快。 下载好以后&a…

传统物流机械锁控的痛点与难点深度剖析

在当今全球化和高度竞争的商业环境中&#xff0c;物流行业作为经济发展的重要支撑&#xff0c;其高效、安全的运营至关重要。而物流锁控&#xff0c;作为保障货物在运输和存储过程中安全的关键环节&#xff0c;传统机械物流锁控方式却面临着诸多严峻的挑战&#xff0c;这些问题…

Linux系统服务——【web,http协议,apache服务和nginx服务】(sixteen day)

一、web基础以及http协议 1、web基本概念和常识 前端开发一般用uniapp. 1、Web:为用户提供的一种在互联网上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 2、Web 服务为用户提供各种互联网服务&#xff0c;这些服务包括信息浏览服务&#xf…

关于使用pagehelper分页插件 进行mybatis 一对多嵌套查询时 查询数量太多 无法达到你想展示的效果的问题 --已解决

1.问题 先来描述一下问题 我有一个商品表 里面嵌套 1.1如下是我的数据库 一个商品对应两个口味对应三个商品轮播图&#xff0b;两个商品描述图 那可不是1*2*2*3 12 就是分页里面的pageSize 为12 时才能显示完这个商品的完整数据 这是我的sql语句 resultMap映射 2.正确做…

【香橙派系列教程】(二)刷机和系统启动

&#xff08;二&#xff09;刷机和系统启动 文章目录 &#xff08;二&#xff09;刷机和系统启动1.刷机2.基于 Windows PC 将 Linux 镜像烧写到 TF 卡的方法3.Debian 和 Ubuntu 系统使用说明4.串口登录系统5.修改登陆密码6.修改网络配置7.SSH登录开发板8.修改开发板内核启动日志…

学习008-02-04-05 Make a List View Editable(使列表视图可编辑)

Make a List View Editable&#xff08;使列表视图可编辑&#xff09; This lesson explains how to make a List View editable. 本课介绍如何使列表视图可编辑。 The instructions below show how to create new objects of the DemoTask type directly in the Task List V…

MSPM0G3507之电赛小车

一、前言 本文没什么技术分享&#xff0c;纯聊天。以下内容均为笔者的浅薄理解&#xff0c;有不对的地方还请多多包涵。 二、相关配置 主控单元&#xff1a;MSPM0G3507SPTR&#xff08;48角&#xff09; 编译环境&#xff1a;Keil5.33、5.39&#xff08;推荐&#xff09;都可 …

一分钟小课堂!电脑怎么录屏?4款热门软件实操指南

在这个信息超多的时代里&#xff0c;学会电脑怎么录屏可真是一门挺有用的技能。不管是你想做教学视频、录下游戏里好玩的瞬间&#xff0c;还是展示一下工作上的步骤&#xff0c;掌握录屏的方法都能让你的分享更直观、更有效率。今天&#xff0c;咱们就来聊聊四款很火的录屏大师…

vue3-环境变量-JavaScript-axio-基础使用-lzstring-字符串压缩-python

文章目录 1.Vue3环境变量1.1.简介1.2.全局变量的引用1.3.package.json文件 2.axio2.1.promise2.2.安装2.3.配置2.3.1.全局 axios 默认值2.3.2.响应信息格式 2.4.Axios的拦截器2.4.1.请求拦截器2.4.2.响应拦截器2.4.3.移除拦截器2.4.4.自定义实例添加拦截器 3.lz-string3.1.java…

Tantivy使用Rust 开发的全文搜索引擎库

一、概述 Tantivy是一个全文搜索引擎库&#xff0c;灵感来自Apache Lucene&#xff0c;用Rust编写。 如果你正在寻找Elasticsearch或Apache Solr的替代品&#xff0c;请查看我们基于Tantivy构建的分布式搜索引擎Quiuckwit。 Tantivy更接近Apache Lucene&#xff0c;而不是E…

仅需一分钟,使用极空间部署一个强大的开源问卷考试系统『SurveyKing』

仅需一分钟&#xff0c;使用极空间部署一个强大的开源问卷考试系统『SurveyKing』 哈喽小伙伴们好&#xff0c;我是Stark-C~ 我们生活中估计应该都收到了不少的问卷调查吧&#xff1f;很多商家或者运营商都会通过问卷调查的方式了解客户满意度&#xff0c;或者高市场调研&…