【问题标题】:SQL Validation in DelphiDelphi 中的 SQL 验证
【发布时间】:2013-03-27 21:38:43
【问题描述】:

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

select * from contacts where id = 42

会通过但是

select * from contacts where id 42

会失败

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

我想将此作为单元测试的一部分,所以我想检查生成的 SQL 是否有效,但不想在服务器上执行它。

【问题讨论】:

  • 你看到Need in SQL parser on Delphi 和它的答案了吗?还有,什么数据库?不同的 DBMS 使用不同的语法,因此任何 vaidator/parser 都需要知道您使用的是什么 DBMS 才能知道什么是有效的。
  • @KenWhite 基本 SQL92 语法很好,不需要对特定 DBMS 进行任何扩展
  • 如果您正在使用 SQL Server 并且能够在查询验证时连接,您可以使用 SET PARSEONLY 语句。
  • @TLama 仍然不适合单元测试。

标签: sql delphi validation


【解决方案1】:

在 Delphi 中编写 SQL 解析器时,对“delphi sql parser”的快速 Google 查询返回 this article,包括底部链接中的源代码。

解析器可以很容易地用作验证器;只需将生成的输出丢弃即可。如果它解析,它是有效的。如果出错,则不是。

【讨论】:

  • 这个解析器看起来可能可用,但如果遇到错误,它会调用 halt(1)。我希望不必花太多时间在这上面。它也不会在 XE3 下编译,因为它不支持 Unicode。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-19
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多