C# 读写InfluxDB例子


1、InfluxDBHelper类

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;

namespace testinfluxdb
{
    public class InfluxDBHelper
    {
        static string _baseAddress;  //地址
        static string _username;  //用户名
        static string _password;  //密码
        static string _database;  //数据库名

        /// <summary>
        /// 构造函数
        /// </summary>
        public InfluxDBHelper()
        {

            _baseAddress = System.Configuration.ConfigurationSettings.AppSettings["IDBA"].ToString();
            _username = System.Configuration.ConfigurationSettings.AppSettings["IDBU"].ToString();
            _password = System.Configuration.ConfigurationSettings.AppSettings["IDBP"].ToString();
            _database = System.Configuration.ConfigurationSettings.AppSettings["IDBN"].ToString();
        }

        /// <summary>
        ////// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public string Query(string sql)
        {
            string pathAndQuery = string.Format("/query?db={0}&epoch=u&q={1}", _database, sql);
            string url = _baseAddress + pathAndQuery;

            string result = HttpHelperGet(url);
            return result;
        }

        /// <summary>
        ////// </summary>
        /// <param name="sql"></param>
        /// <returns></returns>
        public string Write(string paramStr)
        {
            string pathAndQuery = string.Format("/write?db={0}", _database);
            string url = _baseAddress + pathAndQuery;

            string result = HttpHelperPost(url, paramStr);
            return result;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string HttpHelperGet(string uri)
        {
            try
            {
                string result = string.Empty;
                HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(uri);
                if (!string.IsNullOrEmpty(_username) && !string.IsNullOrEmpty(_password))
                {
                    wbRequest.Credentials = GetCredentialCache(uri, _username, _password);
                    wbRequest.Headers.Add(_username, _password);
                }
                wbRequest.Method = "GET";
                HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();
                using (Stream responseStream = wbResponse.GetResponseStream())
                {
                    using (StreamReader sReader = new StreamReader(responseStream))
                    {
                        result = sReader.ReadToEnd();
                    }
                }
                return result;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="paramStr"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public static string HttpHelperPost(string uri, string paramStr)
        {
            try
            {
                string result = string.Empty;
                HttpWebRequest wbRequest = (HttpWebRequest)WebRequest.Create(uri);
                wbRequest.Proxy = null;
                wbRequest.Method = "POST";
                wbRequest.ContentType = "application/x-www-form-urlencoded";
                wbRequest.ContentLength = Encoding.UTF8.GetByteCount(paramStr);
                if (!string.IsNullOrEmpty(_username) && !string.IsNullOrEmpty(_password))
                {
                    wbRequest.Credentials = GetCredentialCache(uri, _username, _password);
                    wbRequest.Headers.Add(_username, _password);
                }
                byte[] data = Encoding.ASCII.GetBytes(paramStr);
                using (Stream requestStream = wbRequest.GetRequestStream())
                {
                    using (StreamWriter swrite = new StreamWriter(requestStream))
                    {
                        swrite.Write(paramStr);
                    }
                }
                HttpWebResponse wbResponse = (HttpWebResponse)wbRequest.GetResponse();
                using (Stream responseStream = wbResponse.GetResponseStream())
                {
                    using (StreamReader sread = new StreamReader(responseStream))
                    {
                        result = sread.ReadToEnd();
                    }
                }

                return result;
            }
            catch (Exception ex)
            {
                return ex.Message;
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private static CredentialCache GetCredentialCache(string uri, string username, string password)
        {
            string authorization = string.Format("{0}:{1}", username, password);
            CredentialCache credCache = new CredentialCache();
            credCache.Add(new Uri(uri), "Basic", new NetworkCredential(username, password));
            return credCache;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        private static string GetAuthorization(string username, string password)
        {
            string authorization = string.Format("{0}:{1}", username, password);
            return "Basic " + Convert.ToBase64String(new ASCIIEncoding().GetBytes(authorization));
        }

    }
}

2、配置文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <!--Influxdb地址-->
    <add key="IDBA" value="http://127.0.0.1:8086"/>
    <!--访问Influxdb用户名-->
    <add key="IDBU" value=""/>
    <!--访问Influxdb用户密码-->
    <add key="IDBP" value=""/>
    <!--访问Influxdb数据库名称-->
    <add key="IDBN" value="test"/>
  </appSettings>
</configuration>

3、测试代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Timers;

namespace testinfluxdb
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        InfluxDBHelper client;
        Stopwatch sw;

        private void button1_Click(object sender, EventArgs e)
        {
            sw = new Stopwatch();
            sw.Start();
            string s = "test,code=code001,mac=aaa v1=100,v2=200,v3=300";

            client.Write(s);

            sw.Stop();
            label1.Text = "耗时:" + sw.ElapsedMilliseconds + "毫秒";
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            client = new InfluxDBHelper();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            label2.Text = client.Query("select * from test");
        }

    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM