Thema: Delphi Nextgrid und sqlite

Einzelnen Beitrag anzeigen

Benutzerbild von Cylence
Cylence

Registriert seit: 2. Sep 2004
Ort: Allgäu
246 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Nextgrid und sqlite

  Alt 4. Jul 2008, 09:50
ok

also ich glaub ich kapiers nich... bin ja noch Anfänger was Datenbanken angeht.
Ich hab auch mehrere Demos wie man das SQLite anspricht usw aber von denen werd ich nciht schlau... Das sagt mir alles nicht wie ich das Nextgrid beim start aus der db befülle und beim beenden andersrum... ich weiß nicht wie ich das machen soll. Und mir fällt auf... das Hinzufügen von leeren Spalten ist nicht das Problem, das geht auch mit dem Nextgrid in nullkommanix, aber das einlesen eben das is das problem und NUR das, selbst beim Schliessen waren bei 40 000 titeln nur einige sekunden nötig ist also ok. Würde das denn wenn ich es irgendwann mal hinbekomme, denn überhaupt schneller sein beim laden?

ok hab mal n test gemacht:

Delphi-Quellcode:
var
   i : Integer;
   slDBpath: string;
   sldb: TSQLiteDatabase;
   sltb: TSQLIteTable;
   sSQL: String;
   Notes: String;
begin
     slDBPath := PrgPfad + 'config\Playlist1.db';
     sldb := TSQLiteDatabase.Create(slDBPath);
     if sldb.TableExists('Playlist1') then begin
        sSQL := 'DROP TABLE Playlist1';
        sldb.execsql(sSQL);
     end;
     sSQL := 'CREATE TABLE Playlist1 ([ID] INTEGER PRIMARY KEY,[Nr] INTEGER NULL,';
     
          sSQL := sSQL + '[AV] FLOAT, [Nr] FLOAT, [Title] VARCHAR (255),[Path] VARCHAR (255),[Genre] VARCHAR (255),[Medium] VARCHAR (255)'+
                                                                                                                                    //[picture] BLOB COLLATE NOCASE,
           ' [Quality] VARCHAR (255),[Rate] VARCHAR (255),[Artist] VARCHAR (255),[Album] VARCHAR (255),[Duration] VARCHAR (255), '+
           '[Invalid] VARCHAR (255),[InfosLoaded] VARCHAR (255),[VideoPosition] VARCHAR (255),[Filedate] VARCHAR (255),[Title] VARCHAR (255),[Resolution] VARCHAR (255), '+
           '[LastUse] VARCHAR (255),[FileSize] VARCHAR (255),[VideoDelay] VARCHAR (255),[PlayCount] VARCHAR (255),[Memo] BLOB,);';
         sldb.execsql(sSQL);
         sldb.execsql('CREATE INDEX Playliste ON [Playlist1]([Name]);');
         //begin a transaction
         sldb.BeginTransaction;
         for i := 0 to JvPlaylist1.RowCount -1 do begin //,picture
             sSQL := 'INSERT INTO Playlist1(AV,Nr,Title,Path,Genre,Medium,Quality,Rate,Artist,Album,Duration,Invalid, '+
                     'InfosLoaded,VideoPosition,Filedate,Title,Resolution,LastUse,FileSize,VideoDelay,PlayCount,Memo) '+
                     'VALUES ('+JvPlaylist1.Cell[0,i].AsString +
                               JvPlaylist1.Cell[1,i].AsString +
                               JvPlaylist1.Cell[2,i].AsString +
                               JvPlaylist1.Cell[3,i].AsString +
                               JvPlaylist1.Cell[4,i].AsString +
                               JvPlaylist1.Cell[5,i].AsString +
                               JvPlaylist1.Cell[6,i].AsString +
                               JvPlaylist1.Cell[7,i].AsString +
                               JvPlaylist1.Cell[8,i].AsString +
                               JvPlaylist1.Cell[9,i].AsString +
                               JvPlaylist1.Cell[10,i].AsString +
                               //JvPlaylist1.Cell[11,i].AsString +
                               JvPlaylist1.Cell[12,i].AsString +
                               JvPlaylist1.Cell[13,i].AsString +
                               JvPlaylist1.Cell[14,i].AsString +
                               JvPlaylist1.Cell[15,i].AsString +
                               JvPlaylist1.Cell[16,i].AsString +
                               JvPlaylist1.Cell[17,i].AsString +
                               JvPlaylist1.Cell[18,i].AsString +
                               JvPlaylist1.Cell[19,i].AsString +
                               JvPlaylist1.Cell[20,i].AsString +
                               JvPlaylist1.Cell[21,i].AsString +'");';
             //do the insert
             sldb.ExecSQL(sSQL);
         end;
       sldb.Commit;
       sldb.Free;
seh ich das ungefähr richtig so? Die db datei wird erstellt das klappt aber is null bytes groß... und es kommt kein Fehler im Debugger? Was is da falsch?

Gruß

tom
Tom
Just DO it
  Mit Zitat antworten Zitat