来自 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) 有 NULLIFISNULL 表达式,当分母为零时返回 null 或在分子的一个重要组成部分为 null 时返回 null,这将有很大帮助。

由于我将让用户可以创建自己的指标,因此使用 SQL 语言进行教学会容易得多,因为用户已经掌握了一定程度的 SQL。

【问题讨论】:

如果您不需要连接来从数据库中提取数据,那么您最好将其作为 C# 代码而不是 SQL 代码来执行。 其实结果应该是3 那么,应该由谁或什么来解析和解释查询? 为什么要运行 SQL 命令?为什么不能只用 C# 编写命令? @John Cappelletti jajajaja,你说得对,对不起。我没有 SQL 连接,我的大脑被烧坏了 【参考方案1】:

也许使用像SQL CESQLite 这样的轻量级嵌入式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 无服务器命令的主要内容,如果未能解决你的问题,请参考以下文章

C# + SQL + Xamarin Android:

C# Discord Bot,尝试为命令包含 API

c#命令行无错误行号

ftp C# SOCKET PASV命令无响应

保留来自 dataReader c# 的 int 变量值

SqlDataReader 和 T-SQL:在使用来自 C# 的“异步”调用时使用“try...catch”和“throw”时不会传播异常