AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Viele Datensätze nacheinander erstellen
Thema durchsuchen
Ansicht
Themen-Optionen

Viele Datensätze nacheinander erstellen

Ein Thema von Reinhardtinho · begonnen am 22. Jan 2008 · letzter Beitrag vom 25. Jan 2008
 
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#1

Viele Datensätze nacheinander erstellen

  Alt 22. Jan 2008, 13:02
Datenbank: SQL Server 2000 • Zugriff über: SDAC-Komponenten
Hi,

ich habe mir ein kleines Musik-Verwaltungstool gebastelt, dass die Dateien in einem Ordner sucht und die Informationen in einem neuen Datensatz in einer Datenbank speichert (Name, Pfad, einige ID3-Tags, ggf. Cover).

Wenn ich die Suche starte, läuft das Programm noch sehr schnell, es werden so ca. 20-40 Datensätze pro Sekunde eingefügt.

Doch ab 5000 etwa wird es sehr langsam und am Ende braucht das Tool 1-2 Sekunden pro Datensatz. Das Taskmanager zeigt an, dass der Prozess sqlservr.exe einen virtuellen Speicher von etwa 500.000k hat.

Ich hab es auf meinem Laptop (WinXP - SP2, 2 GHz, 512 MB Ram) laufen.

Hier nochmal kurz der Code, wie ich die Datensätze erstelle, der immer aufgerufen wird, wenn das Programm eine mp3-Datei gefunden hat.

Delphi-Quellcode:
  try
    if MSTable_Wrk.Locate('Pfad', FileName, [loCaseInsensitive]) then
    begin
      MSTable_Wrk.Edit;
      Inc(ChangedFiles);
    end
    else
    begin
      MSTable_Wrk.Append;
      Inc(NewFiles);
    end;

    if Assigned(OnTTDProgress) then
      OnTTDProgress(self, NewFiles, ChangedFiles);

    with MSTable_Wrk do
    begin
      FieldValues['Pfad'] := FileName;
      FieldValues['Name'] := StringReplace(ExtractFileName(FileName), ExtractFileExt(FileName), '', []);
      FieldValues['Ordner'] := ExtractFilePath(FileName);

      FTyp := LowerCase(ExtractFileExt(FileName));

      if (Pos('.', FTyp) > 0) then
        FTyp := Copy(FTyp, 2, Length(FTyp) - 1);

      FieldValues['Typ'] := FTyp;

      FGroesse := FormatFloat('0 B', Dateigroesse);

      if (Dateigroesse DIV 1024 > 0) then
        FGroesse := FormatFloat('#,##0.00 KB', Dateigroesse / 1024);

      if (Dateigroesse DIV 1048576 > 0) then
        FGroesse := FormatFloat('#,##0.00 MB', Dateigroesse / 1048576);

      if (Dateigroesse DIV 1073741824 > 0) then
        FGroesse := FormatFloat('#,##0.00 GB', Dateigroesse / 1073741824);

      if ((Dauer MOD 60) > 9) then
        FDauer := IntToStr(Dauer DIV 60) + ':' + IntToStr(Dauer MOD 60)
      else FDauer := IntToStr(Dauer DIV 60) + ':0' + IntToStr(Dauer MOD 60);

      FieldValues['Groesse'] := FGroesse;
      FieldValues['Interpret'] := Artist;
      FieldValues['Titel'] := Titel;
      FieldValues['Album'] := Album;
      FieldValues['Jahr'] := Year;
      FieldValues['Genre'] := Genre;
      FieldValues['Lyrics'] := Lyrics;
      FieldValues['Dauer'] := FDauer;
      FieldValues['Bitrate'] := Bitrate;
      FieldValues['Vbr'] := Vbr;
      FieldValues['ChannelMode'] := ChannelMode;
      FieldValues['Samplerate'] := Samplerate;
      FieldValues['Schreibgeschuetzt'] := FReadOnly;
      FieldValues['Versteckt'] := FHidden;
      FieldValues['Erstelldatum'] := Created;
      JvDBImage1.Picture.Assign(JvID3v21.Images.Pictures.CoverFront);

      Post;
    end; (* of with *)

    JvID3v21.Active := False;
  except
    //
  end;
Gibt es eine Möglichkeit die Suche + Erstellung der Datensätze dauerhaft mit der Geschwindigkeit wie zu Beginn auszuführen?


P.S.: Die MSTable_Wrk-Komponente ist nicht mit einer visuellen Komponente verknüpft.


Vielen Dank und freundliche Grüße
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
 


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 02:59 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