时序数据库QuestDB在Winform窗体应用

以下是QuestDB在Winform使用的代码:

//初始化

private void Init()

{

//创建数据库对象 (用法和EF Dappper一样通过new保证线程安全)

SqlSugarClient Db = new SqlSugarClient(new ConnectionConfig()

{

ConnectionString = "host=10.3.5.227;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;",

DbType = SqlSugar.DbType.QuestDB,

IsAutoCloseConnection = true

},

db =>

{

db.Aop.OnLogExecuting = (sql, pars) =>

{

//获取原生SQL推荐 5.1.4.63 性能OK

Console.WriteLine(UtilMethods.GetNativeSql(sql, pars));

//获取无参数化SQL 对性能有影响,特别大的SQL参数多的,调试使用

//Console.WriteLine(UtilMethods.GetSqlString(DbType.SqlServer,sql,pars))

};

//注意多租户 有几个设置几个

//db.GetConnection(i).Aop

});

//建库

//建表

Db.CodeFirst.InitTables(); //所有库都支持

//插入数据

Db.Insertable(new Student() { Name = "jack", SchoolId = 1 }).ExecuteCommand();

//查询数据

Expression<Func<Student, bool>> expression = it => it.Dt < DateTime.Now && it.SchoolId == 1;

expression = expression.And(x => x.SchoolId==1);

var list = Db.Queryable().Where(expression).ToList();

MessageBox.Show(list.Count.ToString());

}

//按钮

private void button1_Click(object sender, EventArgs e)

{

Init();

}

}

//实体与数据库结构一样

public class Student

{

//数据是自增需要加上IsIdentity

//数据库是主键需要加上IsPrimaryKey

//注意:要完全和数据库一致2个属性

SugarColumn(IsPrimaryKey = true, IsIdentity = true)

public int Id { get; set; }

public int? SchoolId { get; set; }

public string Name { get; set; }

SugarColumn(IsOnlyIgnoreUpdate = true)

public DateTime Dt { get; set; }

}

//And扩展类

public static class ExpressionFuncExtender

{

private static Expression Compose(this Expression first, Expression second,

Func<Expression, Expression, Expression> merge)

{

// build parameter map (from parameters of second to parameters of first)

var map = first.Parameters.Select((f, i) => new { f, s = second.Parametersi })

.ToDictionary(p => p.s, p => p.f);

// replace parameters in the second lambda expression with parameters from the first

var secondBody = ParameterRebinder.ReplaceParameters(map, second.Body);

// apply composition of lambda expression bodies to parameters from the first expression

return Expression.Lambda(merge(first.Body, secondBody), first.Parameters);

}

///

/// Combines two given expressions by using the AND semantics.

///

/// The type of the object.

/// The first part of the expression.

/// The second part of the expression.

/// The combined expression.

public static Expression<Func<T, bool>> And(this Expression<Func<T, bool>> first,

Expression<Func<T, bool>> second)

{

return first.Compose(second, Expression.AndAlso);

}

///

/// Combines two given expressions by using the OR semantics.

///

/// The type of the object.

/// The first part of the expression.

/// The second part of the expression.

/// The combined expression.

public static Expression<Func<T, bool>> Or(this Expression<Func<T, bool>> first,

Expression<Func<T, bool>> second)

{

return first.Compose(second, Expression.OrElse);

}

}

internal class ParameterRebinder : ExpressionVisitor

{

private readonly Dictionary<ParameterExpression, ParameterExpression> _map;

internal ParameterRebinder(Dictionary<ParameterExpression, ParameterExpression> map)

{

_map = map ?? new Dictionary<ParameterExpression, ParameterExpression>();

}

internal static Expression ReplaceParameters(Dictionary<ParameterExpression, ParameterExpression> map,

Expression exp)

{

return new ParameterRebinder(map).Visit(exp);

}

protected override Expression VisitParameter(ParameterExpression p)

{

if (_map.TryGetValue(p, out var replacement))

{

p = replacement;

}

return base.VisitParameter§;

}

相关推荐
TDengine (老段)1 天前
集群从“能用“到“高可用“:副本、选主与故障切换到底怎么配
大数据·网络·数据库·物联网·oracle·时序数据库·tdengine
欢喜躲在眉梢里1 天前
时序数据库选型指南:从大数据架构视角拆解 Apache IoTDB 的适用边界
大数据·人工智能·ai·架构·时序数据库·模型
KaiwuDB2 天前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
杨云龙UP3 天前
TDengine Community 超级表建表实战:统一21个TAG与DOUBLE/字符串数据模板
运维·服务器·数据库·时序数据库·tdengine·涛思数据·stable建表
成为深度学习高手3 天前
DAG:沿时间与通道双相关建模的外生变量时序预测
网络·人工智能·深度学习·算法·机器学习·数据挖掘·时序数据库
TDengine (老段)5 天前
TDengine TSDB 实战排障四(升级与兼容)
android·java·大数据·数据库·物联网·时序数据库·tdengine
小小龙学IT5 天前
TDengine 开源时序数据库深度解析:从超级表到工业数采落地
开源·时序数据库·tdengine
颜颜yan_5 天前
从 InfluxDB 到 DolphinDB:一场国产时序数据库的替代与超越
数据库·时序数据库
Allen_LVyingbo6 天前
信息化部门在AI时代的编程转移路径分析(上)
人工智能·python·算法·健康医疗·数据库开发·时序数据库·数据库架构
TDengine (老段)6 天前
TDengine TSDB 实战排障三(集群高可用)
数据库·物联网·时序数据库·tdengine·涛思数据·问题排查