【问题标题】:What is embedded SQL?什么是嵌入式 SQL?
【发布时间】:2011-07-22 16:08:48
【问题描述】:

例如,Delphi 有组件 TADOQuery、TADOStoredProcedure、TADOtable。

它们代表嵌入式 SQL 吗??

嵌入式 SQL 和只在编程语言中使用 SQL 有什么区别??

【问题讨论】:

  • 不是关于嵌入式系统的编程。重新标记。

标签: sql delphi


【解决方案1】:

不,TADO* 不是嵌入式 SQL。

嵌入式 SQL 是一种(主要是过时的)技术,您可以在代码中编写特殊分隔的 SQL,并使用预处理应用程序将其转换为直接 DB API 调用。

如果您愿意,可以在Chapter 14 of the InterBase Embedded SQL guide [PDF] 中阅读相关内容。

【讨论】:

  • 不,TADO* 不需要预处理器。它们是如何工作的?情况很复杂。然而,在链的末端,它们使用 DB 的 DSQL API。
【解决方案2】:

不,那些 Delphi 组件不是嵌入式 SQL。在嵌入式 SQL 中,SQL 语句与常规代码混合在一起,我所知道的最常见的形式是 ESQL/C。它应该被视为已弃用。

它的工作方式是将所有与 SQL 相关的内容翻译成宿主语言的预处理器,并且预翻译的代码通过宿主语言编译器提供。

一个基于 PostgreSQL 的 ESQL/C 实现的小片段:

void showesql() {
    EXEC SQL BEGIN DECLARE SECTION;
    int FooBar;
    VARCHAR DooDad;
    EXEC SQL END DECLARE SECTION;

    EXEC SQL DECLARE foo_bar CURSOR FOR
        SELECT number, ascii FROM foo
        ORDER BY ascii;
    EXEC SQL OPEN foo_bar;
    EXEC SQL FETCH foo_bar INTO :FooBar, DooDad;
    printf ("number is %d and ascii was %s\n",FooBar, DooDad);
    EXEC SQL CLOSE foo_bar;
    EXEC SQL COMMIT;
}

根据我的经验,使用此类代码非常困难,这就是为什么这种曾经非常常见的技术已被放弃的原因。

【讨论】:

    【解决方案3】:

    嵌入式 SQL 在您的程序代码中使用 SQL 语句

    http://en.wikipedia.org/wiki/Embedded_SQL

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 2016-06-11
      • 2010-09-16
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多