![]() |
Datenbank: MySQL • Version: 4.1 • Zugriff über: libmysql.dll
Datenbank: Immer neu verbinden?
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:
Oder würdet ihr am Programmstart einmal verbinden und beim schliessen wieder trennen? So das man bei den funktionen nicht immer neu verbinden muss:
procedure irgendwas;
begin verbinden; zugreifen; trennen; end;
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> |
Re: Datenbank: Immer neu verbinden?
Zitat:
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 :gruebel: 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 :zwinker: Mehr Infos gibts in Luckies ![]() Greetz alcaeus |
Re: Datenbank: Immer neu verbinden?
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> |
Re: Datenbank: Immer neu verbinden?
Zitat:
Delphi-Quellcode:
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 :zwinker:
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; 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 :zwinker:) Greetz alcaeus |
Re: Datenbank: Immer neu verbinden?
Der Don hat dir doch schon gesagt, wie du es machen kannst:
Zitat:
|
Re: Datenbank: Immer neu verbinden?
hm, ich hab nur gedacht das es ne sauberere methode gibt. z.b sowa wwie "mysql_connected(FMySQL)"
|
Re: Datenbank: Immer neu verbinden?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz