C/C++ Mysql/Oracle/MSSQL/Informix Dokus

ctac

Mitglied
Hallo Leute,

falls mir eine helfen könnte,

Ich suche Dokus oder Referenzen zum Thema
SQL-Client, für beliebige Datenbanken.

(ich möchte eine schnittstelle in c oder cpp
zur DB herstellen)

:rolleyes:

vielen dank im vorraus
 
Wenns die Windowswelt sein soll dann reicht doch ODBC gibts eigentlich fuer so ziemlich jede Datenbank .
myODBC kannst du auf mysql.com runterladen!

Fuer mysql gibts noch mysql++ kannste auf der selben seite saugen.
Fuer Oracle geh am besten auf http://www.oracle.com und da wirste auch fuendig ...

gruss
 
Danke errstmal.....

Cool, danke erst mal.

bloss wenn es für windows wäre, hätte ich das nicht mal angefangen.
ODBC ist gut aber nicht professionel genug,
es soll schon unter Unix -> BSD, Solaris, Linux, Debian laufen sollen,

wobei die security eine grosse Rolle spielen soll, ODBC ist sogar unter ..nix leicht zu knacken...

Was ich mir eher vorgestellt habe ist eine Befehls- oder Funktions- Referenz...

wie bei Java -> API; HTML -> w3c.org oder besser noch selfhtml.teamone.de;
PHP -> php.net; Jörg Krause - referenz

bei der alle Funktionen mit kleiner Beschreibung aufgelistet sind....

Bitte kein Anfänger Tutorial ....

wenn sowas gibts?? so Bitte.

ps: MySQL ist kein Problem, aber Mysql nicht nur allein
 
Ich denke mal das einfachste & beste wird sein selbst einheitliche Wrapper für die unterstützten Datenbanken zu schreiben (als dynamische Libraries) und dann zur Laufzeit das entsprechende Modul laden.
 
hmm, Xeragon

hallo Xeragon,

Eigentlich spezialisiere ich mich auf webapplikationen,
eine richtige Anwendung habe ich kaum geschrieben..

ich bin sozusagen ein noo:rolleyes:by !!!! was Application - programmierung angeht.

(gebe ich nicht gerne zu, aber so ist es)

kannst du es etwas Verdeutlichen, wenn das nicht zu trivial wäre, oder besser
nenn mir bitte ein link (manual), wo ich dies nachlesen könnte...

was das Programm betrifft so
habe ich eher an eine fsocket() connection gedacht über ein Datenbank Port z.B 1425 oder 3306... u. ä.
Dabei wird ein Querystring übermittelt (******** ist -> alles open & nicht verschlüsselt)

trotzdem Vielen Dank

Grüsse
 
Ich dachte dass du eine abstrakte Protokoll-Klasse schreibst z.b.:

Code:
class DatabaseConn
{
public:
    DatabaseConn();
    virtual ~DatabaseConn();

    virtual std::string DoSQLQuery(const std::string& sqlQuery) = 0;
    // ... weitere funktionen die du so brauchst
};

Dann schreibst du pro Datenbank eine Klasse, die dieses Protokoll implementiert:

Code:
class OracleConn :
    public DatabaseConn
{
    OracleConn();
    virtual ~OracleConn();

    virtual std::string DoSQLQuery(const std::string& sqlQuery)
    {
        // Oracle spezifischer Code um eine SQL-Abfrage durchzuführen
    }

    // ...
}

Das selbe machst du nun für jede andere Datenbank, die du unterstützen willst.
Dann kannst du ein Objekt der Klasse erstellen und in deinem Programm als DatabaseConn verwenden, somit hast du das selbe Interface für jede Datenbank:

Code:
void DoSomething(DatabaseConn* db)
{
    db->DoSqlQuery( /*...*/ );
}

DatabaseConn* oracle = new OracleConn();
DatabaseConn* mssql = new MSSQLConn();

// Funktioniert mit beiden Datenbanken!
DoSomething(oracle);
DoSomething(mssql);

Zusätzlich könntest du jede dieser Klassen in eine dynamische Library auslagern (unter Windows wär's ne DLL), und in jedem Modul eine Funktion GetDatabase() anlegen, die die spezifische Datenbank erstellt und einen Zeiger auf DatabaseConn zurückgibt.
z.b. so für OracleConn:

Code:
// ... irgendwo im Oracle-Modul
DatabaseConn* GetDatabase(void)
{
    return new OracleConn();
}
// ...

Damit hast du ein Plugin-System, bei dem der User dein System auch für zusätzliche Datenbanken erweitern kann, deren Modulnamen er einfach irgendwo deinem Programm mitteilt, und die du dann genau wie jede andere Datenbank behandeln kannst.
 

Neue Beiträge

Zurück