AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

Ein Thema von Piro · begonnen am 24. Feb 2011 · letzter Beitrag vom 24. Feb 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#11

AW: SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

  Alt 24. Feb 2011, 15:41
Ich probiere gerade herum. Was ist denn besser geeignet TADOCommand oder TADOQuery? Wo ist denn da der Unterschied?

Würde das dann so machen für eine Tabelle am Beispiel der Hotfixes.
Delphi-Quellcode:
SQLCommand.Parameters.Clear;
SQLCommand.CommandText := 'INSERT Into hotfixes (kbnumber,type,installedon,installedby, description, lastupdate,sid) ' +
                          'VALUES (:kbnumber,:type,:installedon,:installedby,:description,:lastupdate,:sid);';
SQLCommand.Prepared;

// Verarbeitung: Hotfixes
for i := 0 to max_AHotfixes do
begin
  if AHotfixes[i].kbnumber = 'then
    break;

  SQLCommand.Parameters.ParamByName('kbnumber').Value := AHotfixes[i].kbnumber;
  SQLCommand.Parameters.ParamByName('type').Value := AHotfixes[i].typ;
  SQLCommand.Parameters.ParamByName('installedon').Value := AHotfixes[i].installedon;
  SQLCommand.Parameters.ParamByName('installedby').Value := AHotfixes[i].installedby;
  SQLCommand.Parameters.ParamByName('description').Value := AHotfixes[i].description;
  SQLCommand.Parameters.ParamByName('lastupdate').Value := FormatDateTime('dd.mm.yyyy hh:nn:ss',lastupdate);
  SQLCommand.Parameters.ParamByName('sid').Value := id;
  SQLCommand.Execute;
end;

// Verarbeitung: Software
SQLCommand.Parameters.Clear;
SQLCommand.CommandText := 'INSERT Into software (name,version,installedon,installedby,lastupdate,sid) ' +
                          'VALUES (:name,:version,:installedon,:lastupdate,:sid);';
SQLCommand.Prepared;

for i := 0 to max_ASoftware do
begin
  if ASoftware[i].name = 'then
    break;

  SQLCommand.Parameters.ParamByName('name').Value := ASoftware[i].name;
  SQLCommand.Parameters.ParamByName('version').Value := ASoftware[i].version;
  SQLCommand.Parameters.ParamByName('installedon').Value := ASoftware[i].installedon;
  SQLCommand.Parameters.ParamByName('lastupdate').Value := FormatDateTime('dd.mm.yyyy hh:nn:ss',lastupdate);
  SQLCommand.Parameters.ParamByName('sid').Value := id;
  SQLCommand.Execute;
end;

// und so weiter
Würde das so Sinn machen oder sollte man 8 TADOCommands am Anfang vorbereiten und dann darauf zugreifen? Ein weiterer Punkt wäre, dass ich prüfen muss, ob es den Eintrag schon gibt. Abhängig davon mache ich ein INSERT oder ein UPDATE. Muss ich dann nicht doch mit TADODataSet arbeiten.
Delphi-Quellcode:
// Check, ob der Datensatz schon vorhanden ist
DSData.Close;
DSData.CommandText := 'Select * from computer_hotfixes where sid = ' + id + ' and kbnumber = '+QuotedStr(AHotfixes[i].kbnumber);
DSData.Open;

if DSData.RecordCount = 0 then
  // INSERT verwenden
else
  // UPDATE verwenden

DSData.Close;
Oder gibt es noch bessere Variante?

Ich könnte ja auch nur INSERTs machen und dann die alten Daten löschen. Habe nur bedenken, dass das eventuell nicht so gut für die incrementelle ID ist.
Delphi-Quellcode:
// Alte Einträge löschen
SQLCommand.Parameters.Clear;
SQLCommand.CommandText := 'delete from computer_hotfixes where sid = ' + QuotedStr(id) + ' and lastupdate <> ' + QuotedStr(FormatDateTime('dd.mm.yyyy hh:nn:ss',lastupdate));
SQLCommand.Execute;
Danke schon mal für Eure großartige Hilfe, mir dieses Thema etwas näher zu bringen.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

  Alt 24. Feb 2011, 15:44
Dafür erstellt man sich eine SP (Stored Procedure) der man die Werte übergibt und die SP veranlasst dann entweder ein INSERT oder UPDATE
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#13

AW: SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

  Alt 24. Feb 2011, 22:15
Sorry für die ganze Fragerein aber ich will das gerne genau verstehen.

Wie würde denn so eine Store Procedure aussehen? Ich schreibe sie doch im Delphi Programm oder?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

  Alt 24. Feb 2011, 22:24
Sorry für die ganze Fragerein aber ich will das gerne genau verstehen.

Wie würde denn so eine Store Procedure aussehen? Ich schreibe sie doch im Delphi Programm oder?
Nein, der Begriff Stored Procedure kommt aus der SQL-Welt und erklärt sich eigentlich von selbst
Eine gespeicherte Abfolge von SQL-Befehlen - und gespeichert auf dem SQL-Server

Aber bevor ich mir hier die Finger wund tippe lassen wir doch MS selber zu Wort kommen
WebCast: MSSQL - Stored Procedures (deutsch)
(Kanne Kaffee nicht vergessen, ist nicht so peppig wie der Daniel)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#15

AW: SQL Server : Perfomanceprobleme - sinnvolle DB Verbindung gesucht

  Alt 24. Feb 2011, 22:28
Vielen Danke Sir Rufo für deine Geduld. Dann werde ich mir das mal anschauen.

Schönen Abend noch. Und danke an alle. Ihr habt mir sehr geholfen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:52 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