AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADOConnection

Ein Thema von Moombas · begonnen am 13. Aug 2019 · letzter Beitrag vom 14. Aug 2019
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#1

AW: ADOConnection

  Alt 14. Aug 2019, 05:30
Moin...
Zitat:
ich "muss" mich aktuell nun anfangen mit Datenbanken auseinander zu setzen.
Für mich stellen sich folgende Fragen:
1. Warum MySQL? Einfach so? Lizenzfalle...schon mal gehört?
2. Warum ADO? Einfach so?
3. Privates Projekt? Commerzielles Projekt?
4. Datensensitive Componenten? = Bääääh. Zum Üben i.O., aber für das eigentliche Projekt besser andere Methode.
5. Normalisierung...schon mal gehört?
6. Admin Tool für deine Datenbankauswahl?

Geändert von haentschman (14. Aug 2019 um 06:33 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#2

AW: ADOConnection

  Alt 14. Aug 2019, 07:28
Moin...
Zitat:
ich "muss" mich aktuell nun anfangen mit Datenbanken auseinander zu setzen.
Für mich stellen sich folgende Fragen:
1. Warum MySQL? Einfach so? Lizenzfalle...schon mal gehört?
2. Warum ADO? Einfach so?
3. Privates Projekt? Commerzielles Projekt?
4. Datensensitive Componenten? = Bääääh. Zum Üben i.O., aber für das eigentliche Projekt besser andere Methode.
5. Normalisierung...schon mal gehört?
6. Admin Tool für deine Datenbankauswahl?
Zu:
1. Weil sie bereits existiert und nur (ab jetzt auch) von mir zugegriffen wird/bearbeitet wird.
2. Weil ich das bisher als einzige Verbindung via Delphi gefunden habe, nehme andere (bessere) Vorschläge gerne an. In diesem Bereich muss ich ja erstmal lernen!
3. nur Firmenintern
4. Auch hier nehme ich bessere Vorschläge gerne an
5. Generell ja, jedoch werde ich wohl nur "Werte in vorhandene Tabellen/Spalten ergänzen"
6. Workbench 8.0.16.0

Aber.....
Ein Aber gibt es immer....

ADO ist nicht nicht mehr State of the Art aber das galt vor 10 Jahren auch für ODBC! Heute ist es umgekehrt.
Du solltest, falls möglich, beide Schnittstellen beachten und alle Datentypen durchtesten. Und da es für Datenbanken auch unterschiedliche Treiber (vom DB-Hersteller und von MS) gibt/geben kann solltest du das im Hinterkopf behalten. Im Zweifel mußt Du Deine Kunden mit den richtigen Treibern versorgen.

Gruß
K-H
...meine "Kunden" wären hierbei meine Kollegen, wo ich ungern weitere Treiber installieren würde, wenn es sich vermeiden lässt. Im Grunde geht es um Arbeitsvereinfachung.


Mal kurz zusammengefasst:
Wir arbeiten bei einem Teil der Hardware mit einer Cloud. - check
Um die Hardware in die Cloud zu melden, werden Daten der Geräte aufgenommen und daraus eine .csv erstellt. - check
Nun soll als weiterer Schritt, diese Geräte in eine Datenbank eingepflegt werden, worüber sie an die Standorte etc. gebucht werden. - todo
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (14. Aug 2019 um 07:32 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ADOConnection

  Alt 14. Aug 2019, 07:38
Du hast Delphi 10.3.
Es wird nur intern verwendet

Nimmt die FireDac-Komponenten von Delphi.
Da wärst du zwar in der GPL-Falle, ist aber für firmeninterne SW egal.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#4

AW: ADOConnection

  Alt 14. Aug 2019, 07:55
Moin...
Zitat:
Nimmt die FireDac-Komponenten von Delphi.
Aber: mit der Professional nur Embedded mit der Enterprise auch Server. Als Firma sollten die MyDAC oder UniDAC drin sein...aktuell gepflegt und gut, auch wenn es aktuell nicht notwendig ist, keine GPL Falle!
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#5

AW: ADOConnection

  Alt 14. Aug 2019, 09:01
Die Verbindung funktioniert mit FireDAC schon mal.

Große Danke dafür schon mal.

Wenn ich jedoch den "gleichen" Code für das hinzufügen/entfernen/updaten des Datenbankeintrags verwende erhalte ich eine Fehlermeldung:

Code:
procedure DeleteClick(Sender: TObject);
var
  sQuery  : string;
begin
  sQuery := 'DELETE FROM ' + DBNAME + ' WHERE seriennummer = 0000000000000000';

  FDQuery.SQL.Clear;
  FDQuery.SQL.Add(sQuery);
  FDQuery.SQL.Add('SELECT * FROM ' + DBNAME);
  FDQuery.Active := True;
  SetGridColumnWidths(DBGrid);
end;
"[FireDAC][Phys][MySQL]-308. Anweisung, die keine Ergebnismengen zurückgibt, kann nicht geöffnet/definiert werden. Hinweis: Verwenden Sie die Methode "Execute/ExecSQL" für Nicht-SELECT-Anweisungen."

Ich suche dafür aber vielleicht kann mir jemand schneller als ich finden kann einen Tipp/Link geben

Edit: Habs hin bekommen, war einfacher als gedacht XD
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (14. Aug 2019 um 09:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#6

AW: ADOConnection

  Alt 14. Aug 2019, 09:11
Delphi-Quellcode:
procedure DeleteClick(Sender: TObject);
var
  sQuery : string;
begin
  sQuery := 'DELETE FROM ' + DBNAME + ' WHERE seriennummer = 0000000000000000';

  FDQuery.SQL.Clear;
  FDQuery.SQL.Add(sQuery);
  FDQuery.SQL.Add('SELECT * FROM ' + DBNAME);
  FDQuery.Active := True;
  SetGridColumnWidths(DBGrid);
end;
1. Keine globalen Variablen! (DBNAME)
2. Entweder Select oder Delete in der Query
3. Select mit Open
4. Delete mit ExecSQL
5. Parameter verwenden

Delphi-Quellcode:
procedure DeleteClick(Sender: TObject);
var
  sQuery : string;
begin
  sQuery := 'DELETE FROM ' + DBNAME + ' WHERE seriennummer = :SER';

  FDQuery.SQL.Text(sQuery);
  FDQuery.ParamByName('SER').AsString := '000000000';
  FDQuery.ExecSQL;
  SetGridColumnWidths(DBGrid);
end;

Geändert von haentschman (14. Aug 2019 um 09:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#7

AW: ADOConnection

  Alt 14. Aug 2019, 09:19
Delphi-Quellcode:
procedure DeleteClick(Sender: TObject);
var
  sQuery : string;
begin
  sQuery := 'DELETE FROM ' + DBNAME + ' WHERE seriennummer = 0000000000000000';

  FDQuery.SQL.Clear;
  FDQuery.SQL.Add(sQuery);
  FDQuery.SQL.Add('SELECT * FROM ' + DBNAME);
  FDQuery.Active := True;
  SetGridColumnWidths(DBGrid);
end;
1. Keine globalen Variablen! (DBNAME)
2. Entweder Select oder Delete in der Query
3. Select mit Open
4. Delete mit ExecSQL
5. Parameter verwenden

Delphi-Quellcode:
procedure DeleteClick(Sender: TObject);
var
  sQuery : string;
begin
  sQuery := 'DELETE FROM ' + DBNAME + ' WHERE seriennummer = :SER';

  FDQuery.SQL.Text(sQuery);
  FDQuery.ParamByName('SER').AsString := '000000000';
  FDQuery.ExecSQL;
  SetGridColumnWidths(DBGrid);
end;
Edit: Fehlermeldung erhalte ich nur, wenn ich folgenden Code verwende:
Zitat:
FDQuery.SQL.Text := 'SELECT * FROM ' + DBNAME;
FDQuery.ExecSQL; //->Fehlermeldung
// FDQuery.Active := True; //funktioniert
Global (const) ist es aktuell nur, weil ich am testen bin und nicht immer die den test-DBNamen eingeben wollte ^^
Nachher muss so oder so individuell die Datenbank/die Tabelle gewählt werden.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (14. Aug 2019 um 10:06 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#8

AW: ADOConnection

  Alt 14. Aug 2019, 09:17
Hmm..

Wenn Du eine einfache interne Datenbank benötigst und auf den Clients nichts installieren willst...
Es nur um die überschaubaren Datenmenge geht...

Schau mal zum MS-SQL-Server Express..
Einfach zu installieren, auf diesem Windows PC/Server nur 2 Ports zu öffnen und einen Dienst (Browser) zu aktivieren..
Keine Lizenzkosten..

Hier werden keine Treiber oder ODBCs unter Windows benötig, diese sind per se schon installiert.
Wenn Du keine besonderen Funktionen des Datenbankservers benötigst, dann genügt der 'alte' SQLOLEDB Provider..

Einfach per ADO ansprechbar...

(Nur so eine Idee.. )
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: ADOConnection

  Alt 14. Aug 2019, 09:13
Als Firma sollten die MyDAC oder UniDAC drin sein..
Hmmmm, nach meiner Erfahrung ist das natürlich nicht drin "schließlich haben wir ja schon das Delphi bezahlt"
(ich weiß das das Kurzsichtig ist, aber der Chef ist der Chef und der kennt sich aus weil er xxxx liest)

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.432 Beiträge
 
Delphi 12 Athens
 
#10

AW: ADOConnection

  Alt 14. Aug 2019, 09:16
Zitat:
"schließlich haben wir ja schon das Delphi bezahlt"
...kommt auf die Version an.
  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 17:03 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