时序数据库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.Parameters[i] })

.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)14 小时前
杨凌美畅用 TDengine 时序数据库,支撑 500 条产线 2 年历史数据追溯
大数据·时序数据库·tdengine
熊文豪14 小时前
时序数据库选型指南:从大数据视角看高效存储与分析
大数据·数据库·时序数据库
m0_748255411 天前
Docker search 命令:高效发现容器镜像的艺术vb#60697
时序数据库
TDengine (老段)1 天前
杨凌美畅用 TDengine 时序数据库,支撑 500 条产线 2 年历史数据追溯
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
TDengine (老段)2 天前
TDengine 数学函数 SIGN 用户手册
大数据·数据库·sql·时序数据库·iot·tdengine·涛思数据
Elastic 中国社区官方博客2 天前
在 Elastic Observability 中,启用 TSDS 集成可节省高达 70% 的指标存储
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·时序数据库
Francek Chen2 天前
【IoTDB】时序数据库选型迷茫?Apache IoTDB 为何成工业场景优选?
大数据·数据库·apache·时序数据库·iotdb
阿祥~3 天前
windows 安装 TDengine
大数据·时序数据库·tdengine
TDengine (老段)4 天前
TDengine 配置参数作用范围对比
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
TDengine (老段)4 天前
从“事后抢险”到“事前防控”:江西水投用 TDengine 时序数据库重塑防汛模式
大数据·数据库·物联网·时序数据库·tdengine·涛思数据·1024程序员节