文章目录
一、前文
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
六、参考
觉得好,就一键三连呗(点赞+收藏+关注)