2009-07-24 6 views
7

Ho trovato questa domanda qui: OLEDB v/s ODBCQual è la differenza tra ODBC e OleDB?

Quale mi ha dato più informazioni, ma in realtà non ha risposto alla domanda che sto chiedendo, quindi procederò da lì.

Sto lavorando in C#. Ti risparmierò la lunga storia su come sono arrivato a questo enigma, ma fondamentalmente sto cercando di decidere tra ODBC e oleDB.

Noi lavoriamo con un sacco di diversi clienti che hanno basi di dati di gran lunga diverse (alcuni SQL, Oracle alcuni, un po 'di qualcosa che non ho mai sentito parlare di e non si preoccupò di ricordare il nome di)

Ora , da quello che ho capito, ODBC è vecchio, ed era/è lo standard. E ora OleDB è arrivato e ... è ... diverso? ma realizza la stessa cosa (parla con i database)

Perché dovrei volerne usare uno sull'altro? ODBC è (secondo il post precedente) multipiattaforma, il che è buono, ma offre pochissime informazioni su ciò che OleDB offre che ODBC non offre.

Nella mia altra ricerca, ho trovato (nei forum MSDN) Persone che dicono "usa OleDB se puoi, se necessario, ricorri a ODBC" Naturalmente, a tre non è stato fornito alcun ragionamento per questo, quindi avrei piace sentirne parlare.

risposta

16

ODBC è un'API C per l'accesso ai database. C'è uno standard per questo, è supportato da tutti i principali fornitori di database, è molto ben documentato, è multipiattaforma. OLEDB è un'interfaccia simile che utilizza la tecnologia COM di Microsoft al posto dell'API C. Ciò significa che è facilmente utilizzabile su piattaforme che supportano COM.

Alla fine della giornata, entrambe le librerie forniscono funzionalità di base approssimativamente equivalenti. In effetti, alcuni driver OLEDB utilizzano effettivamente ODBC piuttosto che librerie di database native.

Quindi, se sei uno sviluppatore C#, che lavora su Windows, OLEDB è la scelta più ovvia tra i due. Se stai usando C (o C++ che non usa COM), o hai bisogno del supporto multipiattaforma, allora ODBC è la soluzione migliore.

0

Se si sta programmando in C#, non si utilizzerà direttamente nessuno dei due. Utilizzerai ADO.NET in qualche modo.

Vero, il provider che si specifica nella stringa di connessione potrebbe risultare essere un provider ODBC o un provider OleDB, ma questo non avrà importanza per il codice. ADO.NET sarà entrambe le API dalla tua vista.

+0

Sarebbe il caso di chi naviga per spiegare il motivo del downvote? –

+1

Non ho votato meno, ma non penso che tu abbia risposto alla domanda. Ci sono molti idioti là fuori - ho trovato la cosa migliore solo per ignorarli. –

+0

Quindi non capisco la domanda. Non sta cercando di decidere quale API usare, vero? Ho pensato che stesse cercando di decidere quali driver utilizzare per la massima flessibilità. Non ho ottenuto nulla dalla domanda che suggerisce che l'OP sta per iniziare a chiamare l'API COM OLEDB. –

2

In qualità di sviluppatore C# e poiché si accede a molte origini dati diverse, si consiglia di utilizzare OLEDB. Ho copiato il seguente da questo white paper perché dà alcuni suggerimenti cosa usare quando:

OLE DB non è una sostituzione per ODBC

La tecnologia ODBC e di mercato di terze parti sono maturati a un punto in cui ODBC è una tecnologia ideale per accedere ai database SQL. Di conseguenza, una parte integrale di OLE DB è un nuovo gestore driver OLE DB che consente ai consumer OLE DB di comunicare con i provider ODBC. Le seguenti informazioni possono guidare la scelta della tecnologia da utilizzare:

  • Se si accede a database relazionali standard da un ambiente non OLE, ODBC è la scelta migliore.
  • Se si desidera esporre un'interfaccia dati a dati non SQL, OLE DB è la scelta migliore.
  • Se si sta programmando in un ambiente OLE, OLE DB è la scelta migliore.
  • Se si desidera creare componenti di database interoperabili, OLE DB è l'unica scelta.
+0

Penso che sia importante sottolineare che il secondo punto si applica solo ai fornitori di un driver OLEDB (o ad alcuni client molto specialistici) - la maggior parte del software client non espone mai tale interfaccia. E il quarto punto è semplicemente marketing-speak. –

+0

@McSim: nessuno di questi punti elenco si applica alla domanda. La domanda riguardava l'utilizzo di questi database da C#. L'OP non chiamerà un'API ODBC basata su C, né un'API basata su COM OLE DB. Dici che sei andato con OLEDB. Stai chiamando l'API COM? –