Welche Datenbank verwenden?

Hallo,

ich entwickle eine Windows Anwendung mit Windows Forms in MS Visual Studio 2008.

Dort werden Patientendaten eingegeben, neu angelegt, verändert, erweitert. Außerdem sollen auch Datum und Eingabezeit den Patienten bzw. bei Erweiterung, den erweiterten Daten, zugeordnet werden. Außerdem sollen die Datensätze mittels einer Suche nach dem Patientennamen wieder aufgerufen werden, um sie durchzusehen oder eben zu erweitern (nun soll auch ein weiterer „Zeitstempel“ mit gespeichert werden) Diese ganzen Patientendatensätze sollen nun in einer Datenbank gespeichert werden. Anzahl der Patienten ist überschaubar. Vielleicht geht es mit der Zeit in die Tausender…

Leider habe ich bisher mit Datenbanken recht wenig gemacht und weiß nicht so richtig welche ich nehmen soll. Ich bin bisher auf MySql und die MSDN Datenbank gestoßen. MySql soll nach meinen Recherchen recht einfach in eine Windows Anwendung integrierbar sein (Lib einfügen und fertig). Da ich noch nicht allzu viele Erfahrungen mit DBs habe, sollte ein möglichst einfaches Ansprechen der Daten möglich sein.

Kann mir jemand eine DB empfehlen? Vielleicht ein Howto oder Tutorial empfehlen?

Vielen Dank schon mal.
Viele Grüße
Verena

Hallo Verena,

leider sagst Du relativ wenig über das sonstige Umfeld aus. Auch wenn es nicht in den Anforderungen steht: Das Thema Security und Unterstützung von verschlüsselten Abspeicherung von Werten sollte bei diesen kritischen Daten auf jeden Fall mit dabei sein (oder würdest Du im Backup der Datenbank Deine Patientendaten im Klartext stehen haben wollen?) Und solange Deine Daten nicht im lokalen, kabelbasierten Netz einer Arztpraxis laufen, muss auch die Kommunikation verschlüsselt sein.
Ein anderer Aspekt ist die Frage nach Lizenz- und Supportkosten.

MfG Georg V.

Hallo Georg,

Hallo Verena,

leider sagst Du relativ wenig über das sonstige Umfeld aus.
Auch wenn es nicht in den Anforderungen steht: Das Thema
Security und Unterstützung von verschlüsselten Abspeicherung
von Werten sollte bei diesen kritischen Daten auf jeden Fall
mit dabei sein (oder würdest Du im Backup der Datenbank Deine
Patientendaten im Klartext stehen haben wollen?)

Hmm. OK. An sowas habe ich noch gar nicht so richtig gedacht. Das sollte dann schon verschlüsselt sein bzw. die DB sollte dies ermöglichen.

Und solange

Deine Daten nicht im lokalen, kabelbasierten Netz einer
Arztpraxis laufen, muss auch die Kommunikation verschlüsselt
sein.

Das ganze soll später mal im Krankenhaus laufen, allerdings schon lokal im dortigen Netz. Man kann allerings nicht ausschließen, ob dort nicht kabelbasierte Netze verwendet werden bzw. die Daten darüber versendet werden.

Ein anderer Aspekt ist die Frage nach Lizenz- und
Supportkosten.

MfG Georg V.

Zunächst werde ich einen Prototypen entwickeln. Später soll dies noch weiter entwickelt und ausgebaut werden. Im Moment soll es daher eher günstig sein. Ich schaue mir MySQL mal genauer an, bin gerade dabei ein Tutorial durchzusehen. MySQL Community Server ist ja kostenlos und frei verfügbar.

Denkst du das MySQL dafür geeignet wäre?

Danke schon mal und viele Grüße
Verena

Hallo Verena,

Denkst du das MySQL dafür geeignet wäre?

Ja, natürlich!

MfG Georg V.

Hallo Georg,

ich bin grade etwas am rumspielen und habe auch schon die libs in meine Windows Forms Anwendung inkludiert.
Folgendes habe ich in der main() probiert:

MYSQL mysql;

if(mysql_init(&mysql)==NULL)
{
printf("\nFailed to initate MySQL connection");
exit(1);
}

if(!mysql_real_connect(&mysql,„localhost“,„root“,"",NULL,0,NULL,0))
{
const char *msg = mysql_error(&mysql);
printf( „Failed to connect to MySQL: Error: %s\n“, msg);
exit(1);
}

//neue DB anlegen
if(mysql_query(&mysql, „Patientendaten“ )==0)/*success*/
printf( „Database Created\n“);
else
printf( „Failed to create new database. Error: %s\n“, mysql_error(&mysql));

mysql_close(&mysql);

mysql_init klappt und bei mysql_real_connect bzw. mysql_error(&mysql) kommt folgender Fehler:
„Can’t connect to MySQL server on ‚localhost‘ (10061)“

Jetzt habe ich schon raus gefunden, dass ich zuerst mal mysql starten muss (dachte die init macht das irgendwie schon) und weiß jetzt aber nicht genau wie. Ich möchte mysql aus meinem Programm raus starten und muss es letztendlich dann auch mit dem Programm mitliefern und mit meinem Programm installieren. Dort bin ich nun total überfragt…

Hast da da nochmal einen Rat für mich?

Danke schonmal für die Hilfe.
Viele Grüße
Verena

Habe folgende Anleitung für Embedded MySQL gefunden:

http://lstigile.wordpress.com/2009/05/19/using-libmy…

Ich poste dann mal meine Ergebnisse.

Hallo Verena,

MySQL ist keine Singeluser Datenbank, die sich startet, wenn der Client einen Verbindungswunsch hat. MySQL wird normalerweise auf einem Server bei Serverstart gestartet und wartet dann auf die Client-Anfragen.

Persönlich kriege ich schon Bedenken, wenn man solche Applikationen mit einer Installation fährt, wo man mit den ROOT-Account und diesen auch noch ohne Passwort arbeitet

if(!mysql\_real\_connect(&mysql,"localhost","root","",NULL,0,NULL,0))
{
 const char \*msg = mysql\_error(&mysql);
 printf( "Failed to connect to MySQL: Error: %s\n", msg);
 exit(1);
}

, aber ich gehe hier noch von ersten Testversuchen aus.

Allerdings ist die Datenbank normalerweise bereits angelegt (1),

//neue DB anlegen
if(mysql\_query(&mysql, "Patientendaten" )==0)/\*success\*/ {
 printf( "Database Created\n"); 
} else {
 printf( "Failed to create new database. Error: %s\n", mysql\_error(&mysql));
 mysql\_close(&mysql);
}

aber ansonsten sollte der Befehl, den Du mittels mysql_query übergibst, eher

create database patientendatenbank;

lauten (man spricht SQL).

MfG Georg V.

Anmerkung (1): Ich habe mir mal erlaubt die C(++) üblichen geschweiften Klammer einzusetzen, damit das Programm (aus meiner laienhaften Sicht) lauffähig wird. Gegebenfalls bitte ignorieren.

Hallo Georg,

danke für die Antworten. Langsam wird mir das ganze etwas klarer :o)

Ja, das sind schon noch meine ersten Testversuche, um das ganze überhaupt zum laufen zu bekommen.

Bisher will der Server nicht laufen. Ich kann also noch nichts weiter testen.

Das muss ich jetzt erstmal hin bekommen.
Habe auch noch eine weitere Anleitung in einem Forum gefunden, um embedded MySQL bzw. den MySQL-Server zum laufen zu bekommen. Wen es interessiert:
http://www.devart.com/forums/viewtopic.php?t=11234&v…
Muss ich aber noch ausprobieren, ob es so hin haut.

Ich berichte mal, falls es geklappt hat.

Viele Grüße
Verena