来自 C# 的 SQL 无服务器命令
Posted
技术标签:
【中文标题】来自 C# 的 SQL 无服务器命令【英文标题】:SQL serverless command from C# 【发布时间】:2019-05-02 21:46:26 【问题描述】:我想知道是否有办法在 C# 代码中运行 SQL 命令而不连接到数据库实例。
例如我想运行以下脚本:
SELECT 15/(3+2) AS RESULT
并在不打开与实际 SQL Server 实例的连接的情况下获得结果 (3)。
更新:原始问题一小时后
我正在构建一个系统,该系统将根据用户输入计算指标。
我正在搜索表达式评估器来计算结果(例如 15/(3+5) = 3 或 15/3+5 = 8。我发现了很多,比如 NCalc、mXparser 等等,但是 SQL(至少 SQL Server) 有 NULLIF
和 ISNULL
表达式,当分母为零时返回 null 或在分子的一个重要组成部分为 null 时返回 null,这将有很大帮助。
由于我将让用户可以创建自己的指标,因此使用 SQL 语言进行教学会容易得多,因为用户已经掌握了一定程度的 SQL。
【问题讨论】:
如果您不需要连接来从数据库中提取数据,那么您最好将其作为 C# 代码而不是 SQL 代码来执行。 其实结果应该是3 那么,应该由谁或什么来解析和解释查询? 为什么要运行 SQL 命令?为什么不能只用 C# 编写命令? @John Cappelletti jajajaja,你说得对,对不起。我没有 SQL 连接,我的大脑被烧坏了 【参考方案1】:也许使用像SQL CE
或SQLite
这样的轻量级嵌入式SQL 引擎来评估您的select
查询?
您也可以直接在常规数据结构上使用LINQ。
【讨论】:
【参考方案2】:您可以使用数据表的计算方法。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim dt As New DataTable
Dim result = dt.Compute("15/(3+2)", "0")
MessageBox.Show(result.ToString)
End Sub
【讨论】:
是的,你是对的,但我确实需要使用 NULLIF 和 ISNULL SQL 函数,我已经编辑了问题。无论如何,谢谢你的回答。 您需要使用NULLIF
还是想要?听起来您对 SQL 很熟悉,并且知道如何处理除零问题,而您真正需要的只是一个解析器来进行数学运算。
@DStanley 你说得对,我喜欢使用 MSSQL,因为客户已经知道这种语言。【参考方案3】:
我想知道是否有办法在 C# 代码中运行 SQL 命令 无需连接到数据库实例。
不,没有;导致您认为查询应该在哪里或针对哪个数据源执行。
【讨论】:
以上是关于来自 C# 的 SQL 无服务器命令的主要内容,如果未能解决你的问题,请参考以下文章
SqlDataReader 和 T-SQL:在使用来自 C# 的“异步”调用时使用“try...catch”和“throw”时不会传播异常