时序数据库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 (老段)2 天前
TDengine STMT2 API 使用指南
java·大数据·物联网·时序数据库·iot·tdengine·涛思数据
时序数据说4 天前
为什么时序数据库IoTDB选择Java作为开发语言
java·大数据·开发语言·数据库·物联网·时序数据库·iotdb
TDengine (老段)4 天前
使用 StatsD 向 TDengine 写入
java·大数据·数据库·时序数据库·iot·tdengine·涛思数据
myskybeyond4 天前
时序数据库TDEngine安装和使用
服务器·时序数据库·tdengine
时序数据说4 天前
时序数据库IoTDB用户自定义函数(UDF)使用指南
大数据·数据库·物联网·开源·时序数据库·iotdb
时序数据说5 天前
Java类加载机制及关于时序数据库IoTDB排查
java·大数据·数据库·物联网·时序数据库·iotdb
时序数据说14 天前
时序数据库IoTDB数据导入与查询功能详解
大数据·数据库·开源·时序数据库·iotdb
TDengine (老段)15 天前
TDengine 3.3.5.0 新功能——服务端查询内存管控
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
TDengine (老段)15 天前
使用 Telegraf 向 TDengine 写入数据
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
时序数据说16 天前
时序数据库双存储引擎技术解析
大数据·数据库·物联网·开源·时序数据库·iotdb