ESQL是否在工业中使用?

时间:2011-03-23 21:01:56

标签: database oracle embedded-sql

我正在学习数据库课程,我必须编写一个命令行应用程序。该教授希望我们编写一个ESQL(嵌入式SQL)应用程序。

我觉得这种技术已被折旧。

我们必须使用oracle预编译器来翻译c ++中的esql代码。这种应用程序看起来很糟糕。

php应用程序也可以正常运行,但是他们可能希望命令行应用程序更快地进行分级(使用输入源进行单元测试)。您认为,Embed SQL是业内使用的,是否值得请教教授做一个java应用程序?还有其他技术更合适吗?

7 个答案:

答案 0 :(得分:8)

嵌入式SQL是在“旧时代”(C ++尚未发明)中用C进行SQL的最流行的方式之一。

现在大部分时间我们都会使用ORM库。不建议再进行嵌入式SQL,因为正如您所说,它依赖于专有的预处理器,并且使代码难以调试,管理和维护。它还连接到一个数据库供应商,并且您的代码将很难移动到另一个数据库后端。一般来说,我们不会在“现实生活”中这样做。

但是因为它只是一个类,你的教授可能对教你SQL和数据库概念感兴趣。嵌入式SQL只是一种工具。您应该学习SQL和数据库,而不是C ++中的嵌入式SQL。

但是,我相信你错过了关于PHP和Java的观点。更不用说PHP是一种脚本语言,而Java是另一种语言,您可以(可能)为嵌入式SQL编写处理器。

因此,您对嵌入式SQL的观点与语言选择无关。它与(1)专有嵌入式系统与预处理器,(2)使用ORM库或数据访问库(例如ODBC)之间的权衡和平衡有关。

题外话:

我第一次在大学时开始使用嵌入式SQL(大约30年前!)。实际上从大学开始编程工作并仍然使用它,但显然它正在走出困境。自1990年左右以来从未见过它。

答案 1 :(得分:4)

是的,但没有。我在该领域的10年中没有遇到过单行的嵌入式SQL。我想(并希望)这项技术仅存在于(某些)遗留系统中。

如今,该行业的数据库相关开发将涉及:

  • 使用JDBC,ADO .NET,OLE DB,ODBC或本机库(在您的情况下为OCCI)直接访问数据库。
  • 某种ORM(Hibernate,Entity Framework或自制的解决方案)。
  • 某种基于框架和/或模式的数据访问层(想想Ruby on Rails,Active Record或自制的解决方案)。

恕我直言,应该根除自制的解决方案,但它们比你想象的更常见。部分原因肯定与那些只在学校试验过时和不适应工具的学生有关...

problems相关的ORM(和数据访问层)可能非常复杂,我想说看看非常有趣。特别是如果你是一名学生。我建议深入研究Martin Fowler's P of EAA

在C ++中,我会看一下SOCI

答案 2 :(得分:4)

我们必须维持旧系统(20岁及以上)。

这里大量使用ESQL。我们将软件迁移到新操作系统(它是一个15岁的hpux)时遇到的大部分问题都带有ESQL代码。

我们正在编写的新软件都在使用C ++库。这为我们提供了更易读的代码+我们的IDE始终没有说“无效语法”。等等.. 一般而言,C ++库与我在.NET或Java中连接数据库的方式非常相似。

使用C ++库可以提高速度(如果明智地使用)并且错误少得多。

我不赞成使用ESQL。但是,由于我们已经进入了许多书面软件更新/升级或维护现有系统的时代,因此掌握旧技术的基本知识非常方便!

答案 3 :(得分:2)

我还没有在应用程序中看到嵌入式SQL 10年。我最后一次看到它是在用COBOL编写的遗留大型机应用程序中。是的,仍然在电力公司使用。

我现在做的小C ++编程不涉及SQL。这些天我遇到的大多数关系数据库编程都是其中之一:

  1. ORM(对象关系映射 - hibernate或JPA)
  2. JDBC
  3. 存储过程(oracle或mySQL)

答案 4 :(得分:1)

虽然这可能已经过时(我在15 - 20年前也做过ESQL),但它仍然可以作为如何处理事情的一个很好的例子 - 即使只是为了让你更加喜欢ORM。< / p>

同样根据我的理解,.NET中的LINQ与在宿主语言中嵌入SQL的想法有些相似 - 而LINQ似乎很受欢迎。

从更广泛的CS中提取,嵌入式DSL似乎是当前研究的主题,所以ESQL作为早期版本的例子,我不能从当今世界中获取太多。

答案 5 :(得分:1)

ESQL是IBM Middleware产品大量传播的主要语言。它不是面向对象语言,而是程序语言。它在某些地方广泛用于在XML之间进行映射(XSLT的别名)。

答案 6 :(得分:0)

我正在使用旧版C ++应用程序代码中的Informix 9.x数据库中的ESql作为我工作的一部分。

虽然我同意所有人的看法,这是一项古老的技术,并且有更好的选择,但我仍然会说它是一种非常巧妙的技术。好的部分是SQL作为C / C ++代码流的一部分嵌入,语法和逻辑明智。 ESql带来的小语法更改很容易学习,因此我说使用它很有趣。

就像Heiko所说,LINQ与ESql的想法很接近。