我正在寻找c#中的查询验证程序,它允许我在发送文本框之前解析SQL文本并验证其正确与否,然后将其发送执行。 (MS SQL或DB2查询)。使用c#进行查询验证
回答
如果您希望验证SQL语法而不使用数据库,那么TSql100Parser
类将适用于这种情况。
声明,这个职位在这里Code to validate SQL Scripts
相当简单的,虽然使用借来的代码。如果它返回null,那么在解析它时没有错误。
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;
}
}
这不容易从c#中使用# – 2011-06-09 03:44:05
很酷。但是对于DB2查询有什么用处吗? – Cannon 2011-08-07 04:49:19
设置查询与此提示
集PARSEONLY上 它只是检查您的查询,SQL和上 SELECT *返回
这样
集PARSEONLY从表A
也没有例外
和
集PARSEONLY上 选择* F ROM表A
回报
消息102,级别15,状态1,2号线 附近有语法错误 'F'。
那么。但是这个会调用数据库,在客户端解析它并验证SQL文本。我想避免数据库调用。此外,DB2 SQL的任何此类选项? – Cannon 2011-08-07 04:47:17
那是我知道的方式 – DeveloperX 2011-08-09 13:23:56
如果你想验证/解析一个SELECT语句,不管select语句的“重载”是什么,我发现验证select语句的最好和最快的方法如下: - 在你的代码中创建2个select语句(串),如:
1)本人有效select语句:SELECT * FROM HUGE_TABLE JOIN MULTIPLE_TABLES WHERE <<Condition>>
2)创建一个类似的select语句,如SELECT TOP 1 * FROM HUGE_TABLE JOIN MULTIPLE_TABLES WHERE <<Condition>>
- 解析/验证只是第二个,不管有多少加入你在那里,它会解析它毫秒,如:
SqlCommand sqlParse = new SqlCommand(ParseSelectStatement, sqlConn);
try
{
sqlConn.Open();
sqlParse.ExecuteNonQuery()
}
希望它有帮助!干杯!
不适用于UPDATE和INSERT或DELETE? – 2017-09-29 00:41:25
这需要您运行查询,如果其成功。 OP要求“在解析文本框中的SQL文本并在发送它执行前验证其正确与否” - 我理解下一个逻辑步骤是运行它,但您的方法不是OP要求的 – Sam 2018-03-08 18:40:24
- 1. 使用C#Excel11进行范围验证
- 2. 使用jQuery进行验证检查
- 3. 使用验证服务进行验证
- 4. 在查询数据库之前使用模型进行验证
- 5. jQuery:使用验证查询
- 6. 使用JavaScript进行验证
- 7. 使用AJAX进行验证
- 8. 使用AWK进行验证
- 9. 使用LDAP进行验证
- 10. 使用GPG进行验证
- 11. 使用bindin进行验证
- 12. 使用jsoup进行验证
- 13. 使用jquery进行验证
- 14. 使用IDataErrorInfo进行验证
- 15. 使用Jquery进行验证?
- 16. 使用doctype进行验证
- 17. 使用C#进行AD验证使用C#
- 18. 使用C++进行DNS查询
- 19. 如何使用json凭证文件与gcloud大查询进行身份验证?
- 20. 使用AFNetworking进行SSL证书验证
- 21. 用c#web api进行Microsoft Azure验证
- 22. 用户使用Spring Security进行身份验证BY用户名查询
- 23. 使用C#API使用SSPI对vSphere进行身份验证
- 24. 使用OAuth2在C#中使用Google API进行身份验证
- 25. 在Excel中使用硒+ C进行空行验证#
- 26. 使用JSON进行查询
- 27. 使用asyncdynamo进行查询
- 28. 使用COUNT进行查询
- 29. 使用socket.io进行用户验证
- 30. 使用JSP进行用户验证
MS SQL - 是最好的查询验证器。发送查询到它,它会抛出异常是查询是错误的。 :)另外,对于一个数据库引擎而言,相同的查询可能是正确的,而对另一个数据库则不正确为什么不让DB引擎验证? – 2011-06-09 03:40:50
MS SQL上的ExecuteSQL会在无效查询时抛出异常,但潜在的危害在于这些查询会被解雇,因为我唯一的目的是测试语法。什么是DB2的情况? – Cannon 2011-06-09 03:43:23
什么开销?数据库查询验证是查询工作流程中的第一步。它不仅会验证语法,还会检查表或列是否存在以及所有类似的事情。 – 2011-06-09 03:45:12