gpt4 book ai didi

c# - 构建动态 SQL 查询的最佳实践

转载 作者:太空狗 更新时间:2023-10-30 00:32:46 26 4
gpt4 key购买 nike

我正在寻找一些关于如何构建动态查询的提示和技巧。我有一个应用程序可以让用户在数据库表中搜索 10 个字段。根据 UI 中的哪些字段填充了值,查询应在数据库中的其他字段中搜索。

目前,我正在尝试使用 StringBuilder 构建查询并添加 where 子句,但我真的不喜欢这样,我想知道是否有更好的方法来执行此操作,例如,如果可能,使用 LINQ。

也许有人可以提出想法或改进一些示例代码。谢谢,祝你有美好的一天!

最佳答案

使用 LINQ,这非常简单:

IQueryable<User> users = db.Users;

if(name != null) users = users.Where(u => u.Name == name);
if(dept != null) users = users.Where(u => u.Dept == dept);
...

var page = users.OrderBy(u => u.Name).Take(100).ToList();

每个连续的 Where 组成 带有更多过滤器的查询;正是您想要的。

对于原始 TSQL,StringBuilder 并非不合理;只要确保你完全参数化它。这可能意味着在每个术语中添加参数;例如:

...
if(name != null) {
sql.Append(" and u.Name = @name");
cmd.Parameters.AddWithValue("name", name);
}
if(dept != null) {
sql.Append(" and u.Dept = @dept");
cmd.Parameters.AddWithValue("dept", dept);
}
...

关于c# - 构建动态 SQL 查询的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15584812/

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