例如,Delphi有组件TADOQuery、TADOStoredProcedure、TADOtable。
它们代表嵌入式SQL吗?
发布于 2011-07-23 00:14:01
不,TADO*不是嵌入式SQL。
嵌入式SQL是一种(主要是过时的)技术,您可以在代码中编写特殊分隔的SQL,并使用预处理应用程序将其转换为直接的DB调用。
如果你愿意,你可以在Chapter 14 of the InterBase Embedded SQL guide文档中阅读它。
发布于 2011-07-23 00:16:28
不,这些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;
}根据我的经验,在这样的代码中工作是相当困难的,这就是为什么这项曾经很常见的技术已经被放弃了。
发布于 2011-07-23 00:14:04
嵌入式SQL在程序代码中使用SQL语句
http://en.wikipedia.org/wiki/Embedded_SQL
https://stackoverflow.com/questions/6792823
复制相似问题