Delphi中的SQL验证

4

我希望能够检查SQL是否有效,例如:

select * from contacts where id = 42

会通过,但是

select * from contacts where id 42

会失败

有没有人知道一个简单的 SQL 验证库 - 最好是免费(或便宜)的?

我想在一些单元测试中完成这个任务,因此我想检查生成的 SQL 是否有效,但不想在服务器上执行它。


2
你看到了Delphi上SQL解析器的需求及其回答吗?另外,你使用的是哪种数据库?不同的数据库管理系统使用不同的语法,因此任何有效的验证器/解析器都需要知道您使用的是哪个数据库管理系统才能知道什么是有效的。 - Ken White
@KenWhite 基本的SQL92语法就足够了,不需要为特定的DBMS添加任何扩展。 - Alister
1
如果您正在使用SQL Server并且能够在查询验证时连接,那么您可以使用SET PARSEONLY语句。 - TLama
@TLama 仍然不适合单元测试。 - Alister
1个回答

1
一次快速的“delphi sql parser”谷歌搜索会返回这篇文章,介绍了如何在Delphi中编写SQL解析器,并在底部提供了源代码链接。
解析器可以很容易地用作验证器;只需丢弃生成的输出即可。如果解析成功,则为有效。如果出现错误,则无效。

这个解析器看起来可能是可用的,但如果遇到错误,它会调用halt(1)。我希望不必花太多时间在这上面。它也无法在XE3下编译,因为它不支持Unicode。 - Alister

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接