gpt4 book ai didi

c# - 编写Winforms动态查询工具

转载 作者:行者123 更新时间:2023-11-30 13:04:21 25 4
gpt4 key购买 nike

我的任务是编写一个允许用户运行临时查询的 winforms c# 应用程序。我在网上搜索了很多可以购买的工具(EasyQuery),但此时购买是不可能的。

所以我想自己写这个。此时我已经创建了一个在运行时用表/列填充的 TreeView ,我可以选择用户检查的列。但现在我必须弄清楚如何动态JOIN 他们选择的表。

部分表结构如下:

Table - Roles - PK = RoleId
RoleId
RoleName

Table - Center PK = CenterId/RoleId/Prefix
CenterId
RoleId
Prefix

Table - Employee - PK = EmployeeID
EmployeeId
Name
CenterId
Dept
Org

Table - Prof - PK = EmployeeId/Profile
EmployeeId
Profile

我总共有 6 个表可以在各种字段上连接,但是由于用户需要动态连接,所以我需要在他们想要生成 SQL 时确定 JOIN .此时我不知道继续生成这些 JOIN 的最佳方法。

我什至考虑过在数据库中创建一个表,其中为每个表/列列出JOIN,然后我可以从那里构建它,但我不知所措。

我也尝试过类似的方法,但如果有不同的建议,我不想走错路:

private void GetJoins()
{
string joinList = string.Empty;

foreach (TreeNode tn in TablesTreeView.Nodes)
{
if (tn.Checked)
if (tn.Nodes.Count > 0) // this would be parent items only
{
foreach (TreeNode childNode in tn.Nodes)
{
// for first child checked
// check the next checked parent nodes for matching checked fields
// if next parent node has same field name checked then add the JOIN
}
}
}
}

这看起来是否在正确的轨道上,或者您能建议另一种方法吗?

我知道这将是一项极其困难的任务,我什至还没有接触到动态 WHERE 子句。我只是在寻找有关临时创建 JOIN 的最佳方法的建议。

最佳答案

我能理解你从头开始写这篇文章的冲动,毕竟它既有挑战性又有趣!但是不要犯这样的错误,即浪费宝贵的资源来编写已经写过很多次的东西。创建功能强大且安全的查询工具比表面上看起来要复杂得多。

SQL Server 2008 Management Studio Express我上次检查时是免费的。

Versabanq Squel是一个健壮且免费的 sql 查询工具。

There are many others

And even more here

关于c# - 编写Winforms动态查询工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9641392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com