Domanda

Sto frequentando un corso di database e devo scrivere un'applicazione della riga di comando. Il Prof vuole che scriviamo un'applicazione ESQL (ENTERNE SQL).

Ho la sensazione che questo tipo di tecnologia sia ammortizzato.

Dobbiamo usare Oracle Precompiler per tradurre un codice ESQL in C ++. Questo tipo di applicazioni sembra terribile da mantenere.

Anche un'applicazione PHP funzionerebbe bene, ma probabilmente vogliono che un'applicazione della riga di comando faccia la classificazione più veloce (test unitario con feed di input). Quello che pensate, è incorporato SQL nel settore, vale la pena chiedere al Prof di fare un'applicazione Java? C'è un'altra tecnologia più appropriata?

È stato utile?

Soluzione

SQL incorporato era uno dei modo più popolare di fare SQL in C durante i "vecchi tempi" (C ++ non è stato ancora inventato).

In questi giorni, per lo più useremo una libreria ORM. Non è consigliabile fare più SQL incorporato perché, man mano che lo si dice bene, dipende da un pre-processore proprietario e rende il codice difficile da debug, gestire e mantenere. Anche ganci L'utente di un singolo fornitore di database e il tuo codice saranno estremamente difficili da spostarsi in un altro backend di database. In generale, non lo facciamo nella "vita reale".

Ma poiché è solo una classe, il tuo prof è probabilmente interessato a insegnare concetti SQL e database. SQL incorporato è solo uno strumento. Dovresti imparare SQL e database, non incorporato SQL in C ++.

Tuttavia, credo che ti manchi il punto chiedendo PHP e Java. Per non parlare del fatto che PHP è un linguaggio di scripting e Java è un'altra lingua che puoi (potenzialmente) scrivere un processore per SQL incorporato.

Quindi il tuo punto su SQL incorporato non ha davvero nulla con linguaggio scelte. Ha a che fare con i compromessi e l'equilibrio tra (1) sistema incorporato proprietario con preprocessore, (2) utilizzando una libreria ORM o una libreria di accesso ai dati (ad esempio ODBC).

Fuori tema:

Ho iniziato a usare SQL incorporato quando ero al college (circa 30 anni fa!). In realtà ho ottenuto lavori di programmazione fuori dal college e lo usava ancora, ma ovviamente stava uscendo. Mai visto usato dal 1990 o giù di lì.

Altri suggerimenti

Sì, ma no. Non ho incontrato una sola linea di SQL incorporato nei miei 10 anni sul campo. Direi (e spero) questa tecnologia esiste solo in (alcuni) sistemi legacy.

Al giorno d'oggi, lo sviluppo relativo al database nel settore implicherebbe:

  • Accesso diretto al database utilizzando JDBC, ADO .NET, OLE DB, ODBC o librerie native (Oc nel tuo caso).
  • Una specie di Orm (Hibernate, Entity Framework o una casa realizzata soluzione).
  • Una sorta di livello di accesso ai dati basato su framework e/o motivi (pensa a Ruby on Rails, Record attivo o una casa fatta soluzione).

IMHO, fatto in casa soluzioni Dovrebbero essere sradicati ma sono più comuni di quanto si pensi. Parte di questo avrebbe sicuramente a che fare con gli studenti che hanno sperimentato solo strumenti obsoleti e inadatti a scuola ...

ORM (e livelli di accesso ai dati) correlati i problemi Può essere molto complesso e direi molto interessante dare un'occhiata. Soprattutto se sei uno studente. Consiglierei di approfondire P di EAA di Martin Fowler.

In C ++, darei un'occhiata Soci.

Dobbiamo mantenere un vecchio sistema qui (20 anni e più).

ESQL è usato in modo massiccio qui. La maggior parte dei problemi che abbiamo avuto mentre spostava il software su un nuovo sistema operativo (era un HPUX di 15 anni) in cui con il codice ESQL.

Il nuovo software che stiamo scrivendo sta utilizzando tutti la libreria C ++. Questo ci dà un codice più leggibile + il nostro IDE non dice sempre "sintassi non valida". ecc. La libreria C ++ è in termini generali molto uguale come come mi connetto a un database in .NET o Java.

L'uso della libreria C ++ è un miglioramento della velocità (se usato saggiamente) e molto meno errori.

ESQL è deprecato dal mio punto di vista. Ma dal momento che siamo entrati in un momento in cui gran parte del software scritto è aggiornare/aggiornare o mantenere i sistemi esistenti, è molto utile avere una conoscenza di base delle vecchie tecniche!

Non vedo SQL incorporato in un'applicazione per 10 anni. L'ultima volta che ho visto che è stato in un'app mainframe legacy scritta a Cobol. Sì, ancora utilizzato presso la società di servizi elettrici.

La piccola programmazione C ++ che faccio in questi giorni non coinvolge SQL. In questi giorni la programmazione DB più relazionale che incontro è una di queste:

  1. ORM (mappatura relazionale dell'oggetto - ibernazione o JPA)
  2. JDBC
  3. procedure memorizzate (Oracle o MySQL)

Sebbene questo sia probabilmente obsoleto (ho anche fatto ESQL ~ 15-20 anni fa), può comunque servire da un buon esempio su come avvicinarsi anche alle cose, anche se è solo per te goderti di più in seguito.

Anche dalla mia comprensione Linq in .NET è in qualche modo simile dall'idea di incorporare SQL nella lingua ospite - e Linq sembra essere abbastanza popolare.

Extrando da questo a CS più ampi, i DSL incorporati sembrano essere un argomento di ricerca attuale, quindi l'esempio di ESQL come prima versione non è troppo inverosimile dal mondo di oggi.

ESQL è la lingua principale che è fortemente propagata per i prodotti Middleware IBM. Non è un linguaggio orientato agli oggetti ma un linguaggio procedurale. È ampiamente usato in alcuni luoghi per fare la mappatura tra XML (alias per XSLT).

Sto usando ESQL a partire da un database Informax 9.x nel codice dell'applicazione C ++ legacy che lavoro come parte del mio lavoro.

Mentre sono d'accordo con tutti che si tratta di una vecchia tecnica e ci sono opzioni migliori là fuori, direi ancora che è una tecnica molto ordinata. La parte buona è che SQL è incorporato come parte del flusso di codice C/C ++, saggio e logico. Il piccolo cambiamento di sintassi che ESQL trasporta è facile da imparare, e quindi dico che è divertente usarlo.

Come ha detto Heiko, Linq è vicino all'idea di ESQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top