InfluxDBHelper.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Ropin.Core.Common
  7. {
  8. public class InfluxDBHelper
  9. {
  10. string _baseAddress = "http://localhost:8086"; //127.0.0.1
  11. string _username = "admin";
  12. string _password = "admin";
  13. /// <summary>
  14. /// 读
  15. /// </summary>
  16. /// <param name="database"></param>
  17. /// <param name="sql">
  18. /// sql = "CREATE DATABASE mydb";
  19. /// sql = "select * from test";
  20. /// </param>
  21. /// <returns></returns>
  22. public string Query(string database, string sql)
  23. {
  24. string pathAndQuery = string.Format("/query?db={0}&q={1}", database, sql);
  25. string url = _baseAddress + pathAndQuery;
  26. string result = HttpHelper.Get(url, _username, _password);
  27. return result;
  28. }
  29. /// <summary>
  30. /// 写
  31. /// </summary>
  32. /// <param name="database"></param>
  33. /// <param name="sql">
  34. /// string sql = "test,name=测试,count=1 value=10";
  35. /// 插入表test 索引name 列count,value
  36. /// </param>
  37. public string Write(string database, string sql)
  38. {
  39. string pathAndQuery = string.Format("/write?db={0}&precision=s", database);
  40. string url = _baseAddress + pathAndQuery;
  41. string result = HttpHelper.Post(url, sql, _username, _password);
  42. return result;
  43. }
  44. }
  45. // public class InfluxDBClient
  46. // {
  47. // //声明InfluxDbClient
  48. // private InfluxDbClient clientDb;
  49. // public InfluxDBClient()
  50. // {
  51. // //连接InfluxDb的API地址、账号、密码
  52. // var infuxUrl = "http://localhost:8086/";
  53. // var infuxUser = "admin";
  54. // var infuxPwd = "admin";
  55. // //创建InfluxDbClient实例
  56. // clientDb = new InfluxDbClient(infuxUrl, infuxUser, infuxPwd, InfluxDbVersion.Latest);
  57. // }
  58. // /// <summary>
  59. // /// 从InfluxDB中读取数据
  60. // /// </summary>
  61. // public async void GetData()
  62. // {
  63. // //传入查询命令,支持多条
  64. // var queries = new[]
  65. // {
  66. //" SELECT * FROM Reading WHERE time> now() - 24h "
  67. //};
  68. // var dbName = "code-hub";
  69. // //从指定库中查询数据
  70. // var response = await clientDb.Client.QueryAsync(queries, dbName);
  71. // //得到Serie集合对象(返回执行多个查询的结果)
  72. // var series = response.ToList();
  73. // //取出第一条命令的查询结果,是一个集合
  74. // var list = series[0].Values;
  75. // //从集合中取出第一条数据
  76. // var info_model = list.FirstOrDefault();
  77. // }
  78. // /// <summary>
  79. // /// 往InfluxDB中写入数据
  80. // /// </summary>
  81. // public async void AddData()
  82. // {
  83. // //基于InfluxData.Net.InfluxDb.Models.Point实体准备数据
  84. // var point_model = new Point()
  85. // {
  86. // Name = "Reading",//表名
  87. // Tags = new Dictionary<string, object>()
  88. //{
  89. // { "Id", 158}
  90. //},
  91. // Fields = new Dictionary<string, object>()
  92. //{
  93. // { "Val", "webInfo" }
  94. //},
  95. // Timestamp = DateTime.UtcNow
  96. // };
  97. // var dbName = "code-hub";
  98. // //从指定库中写入数据,支持传入多个对象的集合
  99. // var response = await clientDb.Client.WriteAsync(point_model, dbName);
  100. // }
  101. // }
  102. public static class InfluxDBExpress
  103. {
  104. /// <summary>
  105. /// 将当前时间转换成unix时间戳形式
  106. /// </summary>
  107. /// <param name="datetime"></param>
  108. /// <returns></returns>
  109. public static long ToUnixTimestamp(this DateTime datetime)
  110. {
  111. return (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
  112. }
  113. }
  114. }