Forum: PC-Programmierung CPP : Alternative zu DB-Zugriff über ODBC;


von interrupt; (Gast)


Lesenswert?

Hallo,

ich nutze für Datenbankzugriffe in GNU C/CPP-Programmen (Eclipse/MinGW) 
bisher die ODBC-Schnttstelle.

Bei Java gibt es ja native Treiber, die direkt auf die Datenbank (z.B. 
MS SQL Server 2008) zugreifen.
Gibt es das für C/CPP auch und welche Erfahrungen habt ihr damit gemacht 
?

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Als jemand der hin und wieder mit Perl unterwegs ist kenn ich aus dieser 
Welt DBI. Es gibt eine libdbi die ähnliches leisten soll aber wohl seit 
2010 keine Neuigkeiten mehr produziert hat.

Matthias

von Peter II (Gast)


Lesenswert?

interrupt; schrieb:
> Gibt es das für C/CPP auch und welche Erfahrungen habt ihr damit gemacht
> ?

klar gibt es die. z.b. von MySQL.

Die Frage ist aber warum man das machen sollte. Bei ODBC kannst du recht 
einfach die Datenbank wechseln. Bei einen nativen Treiber kann die 
Schnittstelle komplett anders aussehen. (nicht wie bei java wo das 
interface vorgegeben ist).

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

interrupt; schrieb:
> Gibt es das für C/CPP auch

Ja, so etwas ist i.d.R. dort zu bekommen, wo es auch die jeweiligen 
Datenbanken gibt, also MySQL, Firebird etc.

Vorteil kann etwas höhere Performance sein, Nachteil ist die Bindung an 
die jeweilige Datenbanksoftware und gegebenenfalls auch -Version.

von interrupt (Gast)


Lesenswert?

Ich frage deshalb, weil mir der Datenbankzugriff mit einem 
Typ4-Java-DB-Treiber (also ohne ODBC) extrem schnell vorkommt.
Bei ähnlicher Performance könnte das auch für C/CPP interessant sein.

von Peter II (Gast)


Lesenswert?

interrupt schrieb:
> Ich frage deshalb, weil mir der Datenbankzugriff mit einem
> Typ4-Java-DB-Treiber (also ohne ODBC) extrem schnell vorkommt.
> Bei ähnlicher Performance könnte das auch für C/CPP interessant sein.

also wenn java schneller als C/Cpp sein soll, dann hats du bei C/Cpp 
viele fehler gemacht.

Wir verwenden nur ODBC und das kann ich sagen das man damit zumindest 
ein 100Mbit/s Netz augelastet bekommt, der Treiber ist ist besitmmt 
nicht das Limit.

von interrupt (Gast)


Lesenswert?

Peter II schrieb:
> also wenn java schneller als C/Cpp sein soll, dann hats du bei C/Cpp
> viele fehler gemacht.

Ich rede nicht von der gleichen Abfrage bei Java bzw. C/CPP, insofern 
ist das nicht direkt vergleichbar.
Für Jva-Verhältnisse kommt mir die direkte Abfrage (ohne ODBC) 
allerdings sehr schnell vor.


> Wir verwenden nur ODBC und das kann ich sagen das man damit zumindest
> ein 100Mbit/s Netz augelastet bekommt, der Treiber ist ist besitmmt
> nicht das Limit.

Die Frage ist nur, was sind wirkliche Daten und was ist Treiber-Overhead 
!

von Peter II (Gast)


Lesenswert?

interrupt schrieb:
> Ich rede nicht von der gleichen Abfrage bei Java bzw. C/CPP, insofern
> ist das nicht direkt vergleichbar.
> Für Jva-Verhältnisse kommt mir die direkte Abfrage (ohne ODBC)
> allerdings sehr schnell vor.

auf die Geschwindigkeit der Abfrage hat der Treiber überhaupt keinen 
Einfluss, das macht der Server.

Entscheident ist, wie werden parameter übergeben (Bind) oder werden 
daten mehrfach kopiert.

In C wird meist bei

String s1;
string s2;
s1 = s2;

ein kopiervorgang gestartet, in java wird nur eine Referenz kopiert.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.