【发布时间】:2012-09-12 21:24:18
【问题描述】:
我有一个应用程序,用户可以在其中输入一个 sql 查询作为文本,我需要在我的应用程序中针对 C# DataTable/Dataset 运行它。有可能吗?
编辑: 根据答案和一些更多的研究,它无法完成 - 无法将 SQL 查询应用于您已经读入应用程序的表。查看可能的解决方法的答案。
编辑 2: 在我的案例中,最终的解决方案是使用 ANTLR 实现一个简单的解析器。它允许用户使用“AND”和“OR”关键字以及括号输入简单的查询。 ANTLR 生成的类会将其转换为一组指令,然后我可以使用这些指令来查询 C# 数据集。
【问题讨论】:
-
是的,但这可能是个坏主意。是什么阻止了sql注入?你看过 SqlCommand 和 SqlDataAdapter 类吗?
-
就您为教程/教育目的创建应用程序而言,这很好。否则,它会被认为是一种糟糕的编程习惯。你可以使用entityframework,最后你会有学习一些ORM工具的经验。
-
@Josh C. 快速查看 SqlCommand 和 SqlDataAdapter 类给我的印象是我只能将它们应用于数据库(因为连接字符串)。如何将它们应用于驻留在 C# 数据集中的 C# 数据表(即它已经读入内存)。
-
@DarshanJoshi 数据集/数据表存在于应用程序内部,不是实际的数据库,并且是只读的(没有连接回实时数据库)。同样,我不关心 sql 注入。我只是想要一种简单且高度可定制的方式让用户输入他们的搜索条件。
-
你想对数据集/数据表运行基于 sql 的查询吗?