Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Vorwort des Gutachters
1 Einstieg in C
2 Das erste Programm
3 Grundlagen
4 Formatierte Ein-/Ausgabe mit »scanf()« und »printf()«
5 Basisdatentypen
6 Operatoren
7 Typumwandlung
8 Kontrollstrukturen
9 Funktionen
10 Präprozessor-Direktiven
11 Arrays
12 Zeiger (Pointer)
13 Kommandozeilenargumente
14 Dynamische Speicherverwaltung
15 Strukturen
16 Ein-/Ausgabe-Funktionen
17 Attribute von Dateien und das Arbeiten mit Verzeichnissen (nicht ANSI C)
18 Arbeiten mit variabel langen Argumentlisten – <stdarg.h>
19 Zeitroutinen
20 Weitere Headerdateien und ihre Funktionen (ANSI C)
21 Dynamische Datenstrukturen
22 Algorithmen
23 CGI mit C
24 MySQL und C
25 Netzwerkprogrammierung und Cross–Plattform-Entwicklung
26 Paralleles Rechnen
27 Sicheres Programmieren
28 Wie geht’s jetzt weiter?
A Operatoren
B Die C-Standard-Bibliothek
Stichwort

Buch bestellen
Ihre Meinung?

Spacer
<< zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch
Buch: C von A bis Z

C von A bis Z
3., aktualisierte und erweiterte Auflage, geb., mit CD und Referenzkarte
1.190 S., 39,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1411-7
Pfeil 24 MySQL und C
Pfeil 24.1 Aufbau eines Datenbanksystems
Pfeil 24.1.1 Warum wurde ein Datenbanksystem (DBS) entwickelt?
Pfeil 24.1.2 Das Datenbank-Management-System (DBMS)
Pfeil 24.1.3 Relationale Datenbank
Pfeil 24.1.4 Eigene Clients mit C für SQL mithilfe der ODBC-API entwickeln
Pfeil 24.2 MySQL installieren
Pfeil 24.2.1 Linux
Pfeil 24.2.2 Den Client »mysql« starten
Pfeil 24.3 Crashkurs (My)SQL
Pfeil 24.3.1 Was ist SQL?
Pfeil 24.3.2 Die Datentypen von (My)SQL
Pfeil 24.3.3 Eine Datenbank erzeugen
Pfeil 24.3.4 Eine Datenbank löschen
Pfeil 24.3.5 Datenbank wechseln
Pfeil 24.3.6 Eine Tabelle erstellen
Pfeil 24.3.7 Die Tabelle anzeigen
Pfeil 24.3.8 Tabellendefinition überprüfen
Pfeil 24.3.9 Tabelle löschen
Pfeil 24.3.10 Struktur einer Tabelle ändern
Pfeil 24.3.11 Datensätze eingeben
Pfeil 24.3.12 Datensätze auswählen
Pfeil 24.3.13 Ein fortgeschrittenes Szenario
Pfeil 24.3.14 Datensatz löschen
Pfeil 24.3.15 Datensatz ändern
Pfeil 24.3.16 Zugriffsrechte in MySQL
Pfeil 24.3.17 Übersicht über einige SQL-Kommandos
Pfeil 24.4 Die MySQL-C-API
Pfeil 24.4.1 Grundlagen zur Programmierung eines MySQL-Clients
Pfeil 24.4.2 Client-Programm mit dem gcc unter Linux und dem Cygwin–gcc-Compiler unter Windows
Pfeil 24.4.3 MySQL Client-Programme mit dem VC++ Compiler und dem Borland Freeware Compiler
Pfeil 24.4.4 Troubleshooting
Pfeil 24.4.5 Das erste Client-Programm – Verbindung mit dem MySQL-Server herstellen
Pfeil 24.4.6 MySQL-Kommandozeilen-Optionen
Pfeil 24.4.7 Anfrage an den Server
Pfeil 24.5 MySQL und C mit CGI
Pfeil 24.5.1 HTML-Eingabeformular
Pfeil 24.5.2 Die CGI-Anwendung »add_db.cgi«
Pfeil 24.5.3 Die CGI-Anwendung »search_db.cgi«
Pfeil 24.6 Funktionsübersicht
Pfeil 24.7 Datentypenübersicht der C-API

Die Kombination von MySQL und der C-API ist ein sehr reizvolles, aber leider auch selten behandeltes Thema. Dieses Kapitel sorgt für Abhilfe und bietet Ihnen eine Einführung in MySQL und die C-API.

24 MySQL und C


Hinweis

Dieses Kapitel kann ein vollwertiges MySQL-Buch nicht ersetzen. Das Thema MySQL ist zwar nicht unbedingt kompliziert, aber der Umfang ist gewaltig. Einige Funktionen der C-API oder MySQL-Sprachelemente werden deshalb hier nicht erwähnt. Hier empfehle ich Ihnen die offizielle Dokumentation von MySQL (Webseite: http://dev.mysql.com/doc/).



Rheinwerk Computing - Zum Seitenanfang

24.1 Aufbau eines Datenbanksystems Zur nächsten ÜberschriftZur vorigen Überschrift

Dieser Abschnitt ist sehr wichtig, sofern Sie noch keinerlei Erfahrungen mit Datenbanksystemen gemacht haben. Hier werden die grundlegenden Prinzipien von Datenbanken erklärt.

Als C-Programmierer werden Sie sich fragen, »Warum benötige ich eine Datenbank? Ich kann doch einfach ein Programm unter Verwendung von binären Bäumen entwickeln, womit die Nutzung einer Datenbank überflüssig wird.« Und Sie werden sich wundern – vereinfacht arbeitet MySQL auch so, nur mit einer anderen Beziehung: einer relationalen. Sicherlich, das könnten Sie auch programmieren, schließlich wurde MySQL in der Programmiersprache C geschrieben. Wozu sollten Sie aber das Rad neu erfinden? Außerdem erweist es sich als recht schwieriges Unterfangen, ein eigenes relationales Datenbankprogramm zu schreiben.


Rheinwerk Computing - Zum Seitenanfang

24.1.1 Warum wurde ein Datenbanksystem (DBS) entwickelt? Zur nächsten ÜberschriftZur vorigen Überschrift

Vor der Zeit der Datenbanken wurden Daten mit selbst entwickelten Programmen in Dateien gespeichert. Diese Programme waren zumeist an die Bedürfnisse einer Firma bzw. eines Anwenders angepasst. Schlimmer noch, teilweise wurden die Programme für die einzelnen Abteilungen bis hin zum einzelnen Mitarbeiter konfiguriert. Probleme waren dabei vorprogrammiert: Herr Meier konnte nicht auf die Datei »x« zugreifen, die Herr Müller erstellt hatte, da Herr Meier im Gegensatz zu Herrn Müller ein modifiziertes Programm besaß.

In diesem Fall hatte Herr Meier zwei Möglichkeiten: Entweder er ließ das Programm vom Programmierer wieder anpassen (das war noch die Blütezeit für Programmierer, als immer Arbeit vorhanden war) oder er ging zu Herrn Müller, um sich von diesem die Daten zu besorgen. Doch als Herr Müller den Datensatz abrufen wollte, fand er ihn nicht mehr. Nach einigen Recherchen stellte sich heraus, dass Frau Schneider diesen Datensatz gelöscht hatte, da sie dachte, er würde nicht mehr benötigt.

Da beim Zugriff auf gemeinsame Daten (auch File Sharing genannt) ein enormer Wartungsaufwand entstand, was häufig zu hohen Kosten führte, wurden Datenbanksysteme entwickelt. Ein Datenbanksystem hat gegenüber dem traditionellen Dateisystem die folgenden Vorteile:

  • Der Benutzer kann auf die Daten zugreifen, ohne dass er wissen muss, wie die einzelnen Daten organisiert sind.
  • Der Benutzer kann (fast) ohne Kenntnisse Daten löschen, hinzufügen, ändern oder erweitern. Der Benutzer muss nicht einmal wissen, um welche Datenbank es sich handelt.
  • Das Datenbanksystem sorgt dafür, dass ein unbedachter Benutzer Daten nicht einfach löschen kann oder doppelte Daten zweimal gespeichert werden.
  • Ein gutes Datenbanksystem ist portabel. Das bedeutet, das System organisiert den Datenbestand so, dass andere Programme und Systeme mithilfe von Schnittstellen auf diese Daten zurückgreifen können.
  • Datensätze werden so optimiert, dass sie geringeren Speicherplatz erfordern und eine schnellere Zugriffszeit haben.

Rheinwerk Computing - Zum Seitenanfang

24.1.2 Das Datenbank-Management-System (DBMS) Zur nächsten ÜberschriftZur vorigen Überschrift

Das Datenbank-Management-System (kurz DBMS) ist die Schnittstelle, mit der der Benutzer Mittel zu Verfügung gestellt bekommt, um mit der Datenbank zu kommunizieren. Durch das DBMS wird beim Ändern, Hinzufügen, Löschen oder Erweitern immer die Korrektheit der Datenbestände überprüft. Greift der Benutzer zum Beispiel auf einen Datensatz in der Datenbank zurück, wird zuerst nach einem gewissen Schema des DBMS auf den Datenbestand zugegriffen. Anschließend werden dem Benutzer diese Daten so serviert, wie er sie sich von der Anforderung wünscht. Dadurch entsteht eine Art Datenunabhängigkeit, die in einem DBMS deshalb so wichtig ist, weil dadurch die physische Speicherung einer Datenbank beliebig geändert werden kann, ohne die logische Struktur der Daten zu verändern.

In Abbildung 24.1 können Sie das Drei-Schichten-Modell erkennen. Um es kurz zu halten: Es handelt sich dabei schlicht um die Trennung von Benutzer, DBMS und Datenspeicherung. Die externe Schicht beschreibt alle Möglichkeiten, die der Benutzer hat, um auf die Datenbank zuzugreifen (Programme, Funktionen und Schnittstellen). Die konzeptionelle Schicht beschreibt das Datenmodell (hier das relationale Modell). Mit diesem Modell wird beschrieben, wie auf die Daten zugriffen wird und in welchem Zusammenhang diese zueinander stehen. Die interne Schicht ist die tiefste Schicht und stellt die Ebene der Datenpräsentation dar – also, wie und wo die Daten gespeichert werden.

Abbildung 24.1 Die drei Ebenen eines Datenbanksystems

Noch ein paar Sätze zur logischen Struktur: Als C-Programmierer kennen Sie ja Strukturen. Folgende Struktur dient jetzt als Beispiel:

struct file{
   char name[MAX];
   char vame[MAX];
   int  old;
   struct file *l;
   struct file *r;
};

Das Programm mit dieser Struktur läuft jahrelang bei Ihrem Kunden mit unzähligen Adressen. Jetzt wünscht Ihr Kunde, dass Sie den Datenbestand für int old entfernen und zwei andere Strukturvariablen dafür einsetzen. Sie müssen jetzt das Programm umschreiben, müssen den Datenbestand neu anpassen, und noch einiges mehr ist dabei zu beachten – eine Menge Arbeit also. Mit dem DBMS lässt sich dies ohne Mühe mit ein oder zwei Befehlen erledigen.

Der Benutzer kommuniziert allerdings nicht direkt mit dem DBMS, sondern mit einer Schnittstelle, die sich noch vor dem DBMS befindet, dem DBCI (Data Base Communication Interface).

Sie können hier eindeutig das Client/Server-Prinzip wiedererkennen, wobei der Server-Teil sich um die Verwaltung und Verarbeitung von Daten kümmert und der Client-Teil mit dem Benutzer zu tun hat. Er gewährleistet die komfortable Eingabe, einfaches Auslesen und mehr. Abbildung 24.2 zeigt das Beispiel grafisch.

Abbildung 24.2 MySQL-Datenbanksystem

Der Client kann jetzt ein Webbrowser sein, der ein CGI-Programm startet, mit dem auf die Datenbank zugegriffen wird, eine Java-Applikation mit der Schnittstelle JDBC (Java Database Connectivity), ein C-Programm mit der ODBC-Schnittstelle (Open DataBase Connectivity), ein Perl-Skript mit dem DBI-Modul oder auch der Datenbank-Client mysql. Wie auch immer Sie auf das DBMS zugreifen, der Server verarbeitet die Anfrage des Clients und schickt gesammelte Daten an ihn zurück. Und die Sprache, mit der hier kommuniziert wird, heißt SQL (Structured Query Language). SQL ist eine genormte Datenbanksprache, die in der Regel jede Datenbank versteht. Es gibt natürlich auch Client-Programme, die Sie verwenden können, ohne ein Wort SQL zu verstehen. Das Client-Programm sorgt in diesem Fall für die Kommunikation zwischen Server und Benutzer. Als ein C-Programmierer sollte es Ihr Ziel sein, ein solches Client-Programm zu entwickeln.


Rheinwerk Computing - Zum Seitenanfang

24.1.3 Relationale Datenbank Zur nächsten ÜberschriftZur vorigen Überschrift

MySQL ist eine Datenbank, die auf dem relationalen Konzept aufbaut. Das bedeutet, dass zwischen den Daten, die in Tabellen gespeichert werden, bestimmte Beziehungen bestehen. Sie können die Daten mit Zusammenhängen zu anderen Daten speichern.


Hinweis

Die Daten einer Datenbank stehen in einer Tabelle mit Zeilen und Spalten. Eine Datenzeile wird dabei als Datensatz bezeichnet.


Folgende Beziehungen sind jetzt zwischen verschiedenen Datensätzen möglich:


Tabelle 24.1 Relationale Beziehungen

Beziehung Bedeutung

1:1-Beziehung

Bei der 1:1-Beziehung zwischen Datensätzen wird nur ein Datensatz mit einem anderen verbunden.

1:n- und n:1-Beziehung

Die 1:n-Beziehung ist die gängigste Beziehung. Ein Datensatz kann so mit vielen anderen Datensätzen zusammengehängt werden.

n:m-Beziehung

Hierbei stehen mehrere Datensätze mit mehreren Datensätzen in Beziehung.


Wenn Sie das relationale Konzept hier nicht so richtig verstanden haben, macht dies für den weiteren Verlauf des Buchs nichts aus. Es sollte nur der Vollständigkeit halber erwähnt werden.


Rheinwerk Computing - Zum Seitenanfang

24.1.4 Eigene Clients mit C für SQL mithilfe der ODBC-API entwickeln topZur vorigen Überschrift

In diesem Buch wird nur beschrieben, wie Sie eigene Clients für die MySQL-Datenbank mit der C-API (Application Programming Interface) schreiben können. Sie können zwar für jede Datenbank mit C eigene Client-Programme erstellen, nur liefert jede Datenbank dafür spezielle und leider unterschiedliche Funktionen. Wollen Sie Client-Programme schreiben, die mit jedem Datenbanksystem zusammenarbeiten, so benötigen Sie die ODBC-API, die eine reine C-Schnittstelle ist. Der ODBC-Treiber muss zuvor besorgt und installiert werden. Er klinkt sich dann zwischen die Client-Anwendung und das DBMS ein. Sendet der Client eine Anforderung an den Server, verarbeitet der ODBC-Treiber zuerst die Anfrage und gibt sie in entsprechender Form an den Server (DBMS) weiter, damit dieser die Anfrage versteht. Der Server antwortet anschließend dem Client, wiederum durch den ODBC-Treiber. Wenn Sie so wollen, dient ODBC also als Dolmetscher für verschiedene Datenbanken mit dem Client-Programm.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z

 C von A bis Z
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: C/C++






 C/C++


Zum Katalog: Einstieg in C






 Einstieg in C


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de