当前位置: 首页> 汽车> 报价 > 学网页设计怎么样_网站建设费用兴田德润团队_专注网络营销推广公司_艾瑞指数

学网页设计怎么样_网站建设费用兴田德润团队_专注网络营销推广公司_艾瑞指数

时间:2025/7/11 17:33:54来源:https://blog.csdn.net/www_wo/article/details/143992808 浏览次数: 0次
学网页设计怎么样_网站建设费用兴田德润团队_专注网络营销推广公司_艾瑞指数
public class ClickHouseClient
{private static readonly HttpClient _httpClient = new HttpClient();private readonly string _clickHouseUrl;private readonly string _username;private readonly string _password;private string _database;private static readonly string _searchFormat = " FORMAT JSON";public ClickHouseClient(){_clickHouseUrl = "url";_username = "user_name";_password = "password";if (string.IsNullOrWhiteSpace(_clickHouseUrl) || string.IsNullOrWhiteSpace(_username) || string.IsNullOrWhiteSpace(_password)){System.Text.StringBuilder str = new System.Text.StringBuilder();str.Append("ClickHouse配置缺失,CloudStorage:ClickHouse");if (string.IsNullOrWhiteSpace(_clickHouseUrl)){str.Append("节点EndPoint,");}if (string.IsNullOrWhiteSpace(_username)){str.Append("节点UId,");}if (string.IsNullOrWhiteSpace(_password)){str.Append("节点Password,");}throw new Exception($"{str.ToString().TrimEnd(',')}未配置");}_database = "default";SetAuthorizationHeader();}/// <summary>/// 设置查询数据库/// </summary>/// <param name="database"></param>public void SetDatabase(string database){_database = database;SetAuthorizationHeader();}/// <summary>/// 单个查询,参数化格式:sql语句中:{id:String},赋值:{"id","666"}/// </summary>/// <typeparam name="T"></typeparam>/// <param name="query"></param>/// <param name="parameters"></param>/// <returns></returns>public List<T> ExecuteQuery<T>(string query, Dictionary<string, string> parameters = null) where T : class{try{var response = SendRequest($"{query} {_searchFormat}", parameters);var responseString = response.Content.ReadAsStringAsync().Result;var data = System.Text.Json.JsonSerializer.Deserialize<ClickHouseBaseModel<T>>(responseString);return data?.data;}catch (HttpRequestException){throw;}}/// <summary>/// 单条插入,参数化格式:sql语句中:{id:String},赋值:{"id","666"}/// </summary>/// <param name="query"></param>/// <param name="parameters"></param>public void ExecuteNonQuery(string query, Dictionary<string, string> parameters = null){try{SendRequest(query, parameters);}catch (HttpRequestException){throw;}}/// <summary>/// 设置访问信息/// </summary>private void SetAuthorizationHeader(){_httpClient.DefaultRequestHeaders.Clear();_httpClient.DefaultRequestHeaders.Add("X-ClickHouse-User", _username);_httpClient.DefaultRequestHeaders.Add("X-ClickHouse-Key", _password);_httpClient.DefaultRequestHeaders.Add("X-ClickHouse-Database", _database);}/// <summary>/// 进行访问/// </summary>/// <param name="query"></param>/// <param name="parameters"></param>/// <returns></returns>private HttpResponseMessage SendRequest(string query, Dictionary<string, string> parameters = null){var formData = new MultipartFormDataContent{{ new StringContent(query), "query" }};if (parameters != null){foreach (var param in parameters){string paramKey = param.Key;if (!param.Key.StartsWith("param_")){paramKey = $"param_{paramKey}";}formData.Add(new StringContent(param.Value), paramKey);}}var response = _httpClient.PostAsync(_clickHouseUrl, formData).Result;response.EnsureSuccessStatusCode();return response;}
}
      public void TestClickHouse(){var client = new ClickHouseClient();client.SetDatabase("default");var sqlSearch = "select id Id, serial_number SerialNumber from test_table";var result = client.ExecuteQuery<TestTable>(sqlSearch);var sql = "insert into test_table(id,serial_number) values({id:String},{serial_number:UInt32})";var param = new Dictionary<string, string>(){{"id","777"},{"serial_number","1234"}};client.ExecuteNonQuery(sql, param);}public class TestTable{public string Id { get; set; }public long SerialNumber { get; set; }}
关键字:学网页设计怎么样_网站建设费用兴田德润团队_专注网络营销推广公司_艾瑞指数

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: