Dernière question pour la nuit. Et des excuses pour le noobness complet de ceci.Quelle est la meilleure façon de créer une base de données d'accès de noms de fichiers en utilisant C++ Builder?
J'ai, avec l'aide de Google et stackoverflow réalisé ce qui suit ...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ADOCommand1->CommandText = "drop table pictures purge";
ADOCommand1->Execute();
ADOCommand1->CommandText = "create table pictures(id autoincrement, filename TEXT(255), notes text(255), category text(20), rank int, filedate datetime,constraint table1_PK primary key(id));";
ADOCommand1->Execute();
AddFiles(Edit1->Text);
}
//---------------------------------------------------------------------------
int AddFiles(AnsiString path, int count)
{
TSearchRec sr;
int f,count2=0;
f = FindFirst(path+"\\*.*", faAnyFile, sr);
while(!f)
{
if(sr.Attr & faDirectory)
{
if(sr.Name != "." && sr.Name != "..")
{
AnsiString subpath;
subpath.sprintf("%s%s%s", path, "\\", sr.Name);
count = AddFiles(subpath,count);
}
}
else
{
Form1->ADOCommand1->CommandText = "Insert into pictures (filename) values ('" + StringReplace(path + "\\" + sr.Name, "'", "''", TReplaceFlags()<<rfReplaceAll) + "')";
Form1->ADOCommand1->Execute();
++count;
++count2;
if (count2 > 100)
{
count2 = 0;
Form1->Caption = "Added " + IntToStr(count)+ " Files.";
Application->ProcessMessages();
}
}
f = FindNext(sr);
}
FindClose(sr);
return count;
}
Il parcourt essentiellement un répertoire donné et ses sous-répertoires, et en ajoutant chaque fichier (avec le chemin) à une base de données MS Access .
(je suis le seul utilisateur, donc je ne me soucie pas beaucoup sur la sécurité)
Avec un grand nombre de fichiers de ce code est horriblement lent. Quelqu'un peut-il décrire une meilleure façon de faire ce que le code fait, (je l'espère, sans rendre votre réponse trop compliquée.)
Qu'en est-il de MySQL? Je devrais être en mesure d'utiliser cela (App serait moins portable mais il n'est pas destiné à être portable de toute façon). Je pourrais utiliser avec ADO ou je pourrais utiliser l'accès MySQL approprié (cela nécessiterait d'apprendre comment faire cela dans un environnement de construction C++) – MrVimes