AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbank: Immer neu verbinden?
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbank: Immer neu verbinden?

Ein Thema von Pseudemys Nelsoni · begonnen am 16. Jun 2005 · letzter Beitrag vom 16. Jun 2005
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 17:02
Datenbank: MySQL • Version: 4.1 • Zugriff über: libmysql.dll
Moin,

würdet ihr während euer Programm läuft und ihr öfters auf eine Datenbank zugreift, mit selbiger immer wieder neu verbinden bei jeder Funktion? sowas wie das hier:

Delphi-Quellcode:
procedure irgendwas;
begin
  verbinden;
  zugreifen;
  trennen;
end;
Oder würdet ihr am Programmstart einmal verbinden und beim schliessen wieder trennen? So das man bei den funktionen nicht immer neu verbinden muss:

Delphi-Quellcode:
procedure irgendwas;
begin
  zugreifen;
end;
?

Da ich bei letzterem ja in jeder Funktion prüfen müsste ob die Verbindung überhaupt besteht und ich nicht weiss wie man das macht, hoffe ich das ihr die erste Methode als bessere bewertet <g>
Mario
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 17:06
Zitat von Pseudemys Nelsoni:
Da ich bei letzterem ja in jeder Funktion prüfen müsste ob die Verbundung überhaupt besteht und ich nicht weiss wie man das macht, hoffe ich das ihr die erste Methode als bessere bewerten würdet <g>
Dann sag ich schon aus Prinzip dass die zweite Methode die bessere ist
Ne, im Ernst. Manchmal dauert das Verbinden auch 1-2 Sekunden (vor allem bei Web-Datenbanken), deshalb wird die Verbindung nur einmal erstellt. Warum sollte man die Verbindung auch trennen, ich seh dafuer keinen sinnvollen Grund
Es ist eigentlich einfach zu pruefen, ob du verbunden bist: fuehre am Anfang einfach mysql_select_db aus, waehle eine DB an die existiert (und auf der du arbeiten willst), und wenns kracht dann brauchst du das mit dem Query gar nicht versuchen
Mehr Infos gibts in Luckies MySQL-Tutorial, aber das hast du bestimmt schon gelesen

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 17:16
Moin alcaeus,

Ich habe schon MySQL Bücher

Mein Problem ist vielmehr, das ich ja über die libmysql.dll auf die datenbank zugreife. Aber die Datenbank selbst sendet mir ja nichts an mein Programm, d.h sowas wie OnDisconnect usw gibt es nicht.
und wenn ich letztere Methode nehmen würde, dann müsste ich ja immer in jeder Funktion mit try..except arbeiten nur um eine AV zu umgehen, das kann doch nicht richtig sein oder? <g>
Mario
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 17:21
Zitat von Pseudemys Nelsoni:
und wenn ich letztere Methode nehmen würde, dann müsste ich ja immer in jeder Funktion mit try..except arbeiten nur um eine AV zu umgehen, das kann doch nicht richtig sein oder? <g>
Wie gesagt, guck dir Luckies Tutorial an, da ist z.B. sowas enthalten:
Delphi-Quellcode:
function Insert(Kontakt: TKontakt): Boolean;
var
  query : string;
  ErrorCode : Integer;
begin
  ErrorCode := mysql_select_db(Descriptor, DBNAME);
  if ErrorCode = 0 then
  begin
    //Hier erstellst du dein Query
    ErrorCode := mysql_real_query(Descriptor, PChar(query), length(query));
  end;
  result := ErrorCode = 0;
end;
AFAIK musst du sowieso immer mysql_select_db ausfuehren (ich kann mich aber auch irren), und du musst IMMER die Fehlerpruefung durchfuehren. Auch wenn du ein Query ausfuehrst weisst du nicht obs glatt geht, deshalb wirst du auch dort Fehler abfangen muessen
Was denkst du was die VCL im Hintergrund macht? Sie fuehrt etwas aus, fragt den Fehlercode ab und ist dann so lieb eine Exception zu feuern anstatt dir einfach das Abfragen des Fehlercodes zu ueberlassen. Wenn dir die manuelle Pruefung nicht gefaellt, verwende doch die Zeos-Kompos. Diese greifen auch "nur" ueber die libmyql.dll zu, aber bieten dir einiges an Komfort (z.B. Exceptions oder Parameter, damit du dir Friemeleien wie im anderen Thread ersparen kannst )

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 17:22
Der Don hat dir doch schon gesagt, wie du es machen kannst:
Zitat von Don Alcaeus:
Es ist eigentlich einfach zu pruefen, ob du verbunden bist: fuehre am Anfang einfach mysql_select_db aus, waehle eine DB an die existiert (und auf der du arbeiten willst), und wenns kracht dann brauchst du das mit dem Query gar nicht versuchen
Kannst dir dafür ja zB ne Funktion "ConnectedToDB" oä schreiben, die das prüft.
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#6

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 18:14
hm, ich hab nur gedacht das es ne sauberere methode gibt. z.b sowa wwie "mysql_connected(FMySQL)"
Mario
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Datenbank: Immer neu verbinden?

  Alt 16. Jun 2005, 18:57
Zitat von alcaeus:
Ne, im Ernst. Manchmal dauert ... ich seh dafuer keinen sinnvollen Grund
Resourcen schonen. Soll man nun Resourcen schnellstmöglich wieder freigeben, wenn sie (demnächst) nicht mehr benötigt werden? Ich würde das im Einzelfall immer abwägen. Aber das 'Im Prinzip' ist schon richtig. Und 1-2 Sekunden sind auch optimistisch.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:13 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