Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is ESQL used in industry?

I'm taking a database course and I have to write a command line application. The prof wants us to write an ESQL (embed SQL) application.

I have a feeling that this kind of technology is depreciated.

We have to use oracle precompiler to translate a esql code in c++. This kind of applications look terrible to maintain.

A php application would also work well, but they probably want a command line application to do the grading faster (unit test with input feed). What you guys think, is Embed SQL used in the industry, does it worth to ask the prof to do a java application ? Is there another technology more appropriate ?

like image 284
Guillaume Massé Avatar asked Mar 23 '11 21:03

Guillaume Massé


4 Answers

Embedded SQL was one of the the most popular way to do SQL in C during the "old days" (C++ was not yet invented).

These days mostly we'll be using an ORM library. It is not recommended to do embedded SQL any more because, as you put it well, it depends on a proprietary pre-processor and makes code difficult to debug, manage, and maintain. It also hooks you to one single database vendor and your code will be extremely difficult to move to another database backend. Generally, we don't do it in "real life".

But as it is only a class, your prof is probably interested in teaching you SQL and database concepts. Embedded SQL is only a tool. You're supposed to learn SQL and databases, not embedded SQL in C++.

However, I believe that you're missing the point by asking about PHP and Java. Not to mention that PHP is a scripting language, and Java is another language that you can (potentially) write a processor for embedded SQL.

So your point about embedded SQL really has nothing with language choices. It has to do with the tradeoffs and balance between (1) proprietary embedded system with preprocessor, (2) using an ORM library, or a data-access library (e.g. ODBC).

Off-Topic:

I first started using embedded SQL when I was in College (that was about 30 years ago!). Actually got programming jobs out of College and still used it, but obviously it was on the way out. Never seen it used ever since 1990 or so.

like image 189
Stephen Chung Avatar answered Sep 28 '22 01:09

Stephen Chung


Yes, but no. I have not met a single line of Embedded SQL in my 10 years in the field. I would say (and hope) this technology only exists in (some) legacy systems.

Nowadays, database related development in the industry would involve:

  • Direct database access using JDBC, ADO .NET, OLE DB, ODBC or native libraries (OCCI in your case).
  • Some sort of ORM (Hibernate, Entity Framework or a home made solution).
  • Some sort of data access layer based on frameworks and/or patterns (think Ruby on Rails, Active Record or a home made solution).

IMHO, home made solutions should be eradicated but they are more common than you would think. Part of this would certainly have to do with students having only experimented with outdated and inadapted tools at school...

ORM (and data access layers) related problems can be very complex and I would say very interesting to have a look at. Especially if you are a student. I would recommend delving into Martin Fowler's P of EAA.

In C++, I would have a look at SOCI.

like image 43
Mac Avatar answered Sep 28 '22 02:09

Mac


We have to maintain on an old system here (20 years and older).

ESQL is used massively in here. The most of the problems we had while moving the software to a new OS (it was an 15 year old hpux) where with the ESQL code.

The new software we are writing are all making use of the C++ library. This gives us more readable code + our IDE doesn't say 'invalid syntax' all the time. etc.. The C++ library is in general terms very equal as how I connect to a database in .NET or Java.

Using the C++ library whe have an improvement of speed (if used wisely) and much less errors.

ESQL is deprecated by my point of view. But since we have entered an time where a lot of the written software is to update/upgrade or maintain existing systems, it is very handy to have basic knowledge of old techniques!

like image 40
JDC Avatar answered Sep 28 '22 02:09

JDC


I haven't seen embedded SQL in an application for 10 years. The last time I saw it was in a legacy mainframe app written in COBOL. Yes, still being used at electrical utility company.

The little C++ programming I do these days doesn't involve SQL. These days most relational DB programming I encounter is one of these:

  1. ORM (object relational mapping - hibernate or JPA)
  2. JDBC
  3. stored procedures (oracle or mySQL)
like image 30
nont Avatar answered Sep 28 '22 02:09

nont