gpt4 book ai didi

c# - 验证 SQL 脚本的代码

转载 作者:IT王子 更新时间:2023-10-29 04:36:20 25 4
gpt4 key购买 nike

如何在使用 .net 2.0 和 c# 执行 sql 脚本之前验证它们?

如果 sql 无效,我想返回错误行。

最佳答案

如果您正在创建一个允许用户手动输入一些 sql 代码的工具,并且您希望在 sql server 上执行之前验证使用 C# 代码输入的代码,您可以创建这样的方法:

using Microsoft.Data.Schema.ScriptDom;
using Microsoft.Data.Schema.ScriptDom.Sql;

public class SqlParser
{
public List<string> Parse(string sql)
{
TSql100Parser parser = new TSql100Parser(false);
IScriptFragment fragment;
IList<ParseError> errors;
fragment = parser.Parse(new StringReader(sql), out errors);
if (errors != null && errors.Count > 0)
{
List<string> errorList = new List<string>();
foreach (var error in errors)
{
errorList.Add(error.Message);
}
return errorList;
}
return null;
}
}

截至 2018 年和新的数据库版本,这可能是更新的版本:

using Microsoft.SqlServer.TransactSql.ScriptDom;

(使用 npm 下载:PM> Install-Package Microsoft.SqlServer.TransactSql.ScriptDom -Version 14.0.3811.1 )

public bool IsSQLQueryValid(string sql, out List<string> errors)
{
errors = new List<string>();
TSql140Parser parser = new TSql140Parser(false);
TSqlFragment fragment;
IList<ParseError> parseErrors;

using (TextReader reader = new StringReader(sql))
{
fragment = parser.Parse(reader, out parseErrors);
if (parseErrors != null && parseErrors.Count > 0)
{
errors = parseErrors.Select(e => e.Message).ToList();
return false;
}
}
return true;
}

关于c# - 验证 SQL 脚本的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276035/

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