AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Quellcode mal bitte angucken
Thema durchsuchen
Ansicht
Themen-Optionen

Quellcode mal bitte angucken

Ein Thema von Luckie · begonnen am 28. Jan 2005 · letzter Beitrag vom 29. Jan 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Quellcode mal bitte angucken

  Alt 28. Jan 2005, 10:17
So, ich habe mir innerhalb eines knapp zweitägigen Crashkurses mehr oder weniger die Grundlagen von (my)SQL angeeignet. Das heißt, ich kann eine Datenbank erstellen, eine einfache Tabelle anlegen und mit dieser Tabelle die gängigen Datenbankoperationen ausführen: Einfügen, ändern, löschen, sortieren.

Das habe ich an Hand von Chewies Tutorial gemacht, bis zur zweiten Seite habe ich gelesen oder so und dieser Seite, der Rest war "learning by doing". (Als Programmierer kann man sich das ja leisten, als Chirug nicht unbedingt. ) Dabei rausgesprungen ist eine kleine Adress-Datenbank.

Ich würde, die jenigen von euch, die sich etwas mit SQL und speziell mySQL auskennen, jetzt mal bitten über den Code drüber zugucken, ob das so in Ordnung ist, also das Datenbank technische.

Die Datenbank benötigt den mySQL-Server.
Bevor ihr Daten eingeben könnt, müsst ihr eine Datenbank erstellen und dann die Tabelle. Die Schaltfläche "Import" läd eine csv Datei mit dem Namen "Adressen.csv" und dem Aufbau: "Namne, Vorname, Strasse, PLZ, Ort, Telefon, Handy, EMail". Das war nur für mich, um aus meiner Adressedatenbank da ein paar Datensätze reinzubekommen. Sortieren kann man die Datenbank, in dem man in das Texteingabefeld die zu sortierenden Spalten mit einem Komma getrennt eingibt und dann auf "Sortieren" klick. (Wäre bestimmt auch per Klick auf einen Spaltenkopf gegangen, aber darauf kam es mir nicht an.)

Also mich interessiert, was ihr von dem Code haltet, das Design, die Funktionalität und die Bedienbarkeit der GUI spielen keine Rolle.

Könnte man somit, nach diesem Projekt, sagen, dass ich die nötigsten Grundlagen beherrsche?
Angehängte Dateien
Dateityp: zip adressdbsql_118.zip (740,2 KB, 63x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 11:09
Ich würds mir ja gerne ankucken, hab aber leider keinen funktionierenden Rechner zu Hause. Vielleicht aber am Wochenende...
Wenns klappt, schau ich mal durch.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 11:31
Den Code kannst du doch auch im Notepad öffnen. Und mit irgendwas Rechner ähnlichen musst du ja dieses Posting erstellt haben
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 11:46
Hallo Luckie,

ich kann leider keine Datenbank anlegen, obwohl ich die Konstanten (Host etc) richtig gesetzt hab. Vielleicht hast du/ich ein Verständnisproblem, was der Unterschied zwischen Datenbank und Tabelle ist...

du hast ein konstante _DB: Die interpretier ich als Name der Datenbank
und eine Konstante DBNAME: Das interpretier ich als der Name der Tabelle. Das kann dann aber nicht so ganz sein, da du z.B. in der Insert-Methode in die Tabelle Kontakte schreibst...

Auf deutsch: ich versteh den Unterschied von _DB und DBNAME nicht?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 11:52
Ja, das sind noch Überbleipsel aus dem gewachsenen Code. Ich hatte anfangs erstmal nur Versucht eine Verbindung zum DB-Server zu bekommen, dort habe ich _DB benutzt:

Delphi-Quellcode:
procedure Connect(var ConDes: PMYSQL; const Host, User, PW, DB: string; Port:
  Integer);
begin
  if Assigned(ConDes) then
  begin
    log('Verbindungsdeskriptor initialisiert');
    if Assigned(mysql_real_connect(ConDes, PChar(Host), PChar(User), PChar(PW),
      PChar(DB), PORT, nil, 0)) then
    begin
      log('Verbindung zum Datenbankserver hergestellt');
    end
    else
      log(mysql_error(ConDes));
  end
  else
    log('Initialisierung fehlgeschlagen');
end;
Aufruf:
Connect(Descriptor, _HOST, _USER, _PW, _DB, _PORT); Beim Anlegen der Datenbank habe ich dann DBNAME genommen:
Delphi-Quellcode:
procedure TForm1.btnCreateBDClick(Sender: TObject);
var
  query : PChar;
  ErrorCode : Integer;
begin
  query := 'CREATE DATABASE' + ' ' + DBNAME;
  try
    ErrorCode := mysql_real_query(ConDes, query, length(query));
    if ErrorCode = 0 then
      log('Datenbank angelegt')
    else
      log(mysql_error(Descriptor));
  except
    log('EXCEPTION Datenbank konnte nicht angelegt werden');
  end;
end;
Und selbige Konstante dann weiter benutzt. Ist etwas blöd, stimmt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 11:54
Habs jetzt ne Datenbank erstellt gekriegt, der Unterschied zwischdn _DB und DBNAME weiss ich aber immer noch nicht..

Zu deiner Datenbank selbst: du nutzt überall den Feldtyp Text. Das macht die Datenbank nicht gerade effizient, auch wenns bei paar Adressen egal ist. Text ist ein sogenanntes Blob-Feld, und vergleichbar mit einem Memo. Da kannst du beliebig viel reinschreiben, hat aber auch gravierende Nachteile:

1) in den meisten Datenbanksystemen ist über Blob-Felder kein Suchen möglich, auch wenn bei MySQL funzt
2) du kannst über Blob-Felder keine Indizes rsp Schlüssel legen. Dadurch wird das Sortieren und deine Joins zwischen Tabellen sehr langsam, da alles sequentiell durchgescannt werden muss.

Nimm also, bei Felder wie name, vorname lieber den Typ varchar, und leg dort eine maximale Länge fest.

Den Typ Text kannst du z.B. verwenden, wenn du noch einen Kommentar zu einer Adresse aufnehmen willst.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 12:01
Es gibt keinen. Lösch die Konstante _DB aus dem Quellcode und gib dort, wo sie verlangt wird, einen Leerstring an.

Danke für den Tipp.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 13:40
Ich bekomme eine AV (im Modul libmysql.dll) beim Drücken von "DB Anlegen".

Habe die DB dann von Hand angelegt, dann ging alles.
Sieht ganz gut aus.

Evt. als Vorschlag für dich, zu dem Projekt passt ganz gut der embedded MySQL-Server.
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 17:24
So, ich sitz jetzt endlich wieder an meinem Rechner

Dein Code ist soweit OK, außer dass du für die Fehlerabfragen, wie ich schon in irgendeinem Thread erwähnt habe, mysql_error benutzen kannst. Bei Schreibe-Queryes ist vielleicht noch mysql_affected_rows ganz interessant.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Quellcode mal bitte angucken

  Alt 28. Jan 2005, 17:25
Zitat von Nightshade:
Ich bekomme eine AV (im Modul libmysql.dll) beim Drücken von "DB Anlegen".
Sollte eigentlich nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz