ما هي أفضل طريقة لإنشاء قاعدة بيانات وصول أسماء الملفات باستخدام ++ C باني؟

StackOverflow https://stackoverflow.com/questions/464108

سؤال

وسؤال أخير ليلا. والاعتذار عن noobness كاملة من هذا.

ولدي، مع مساعدة من ستاكوفيرفلوو وجوجل حققت التالية ...

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;
}

ومن تعبر أساسا دليل معين ودليل فرعي لها، وإضافة كل ملف (مع المسار) إلى قاعدة بيانات MS الوصول.

و(أنا الوحيد المستخدم لذلك أنا لا أهتم كثيرا حول الأمن)

ومع عدد كبير من الملفات هذا الرمز بطيء فظيعة. يمكن لأي شخص أن يصف طريقة أفضل للقيام بما يقوم به رمز، (نأمل من دون الإجابة معقدة للغاية. أنا مستجد في هذا تذكر)

هل كانت مفيدة؟

المحلول

وعنق الزجاجة في التعليمات البرمجية هي في معظمها من المرجح طبقة قاعدة البيانات / وصول ADO. وظائف على مستوى الدليل (FindFirst ()، FindNext ()) هي سريع نسبيا. هل يمكن أن تحقق ما إذا كانت قاعدة البيانات عنق الزجاجة من خلال استبدال تلك المكالمات مع البيانات cout. تخميني هو أنه سيتم تشغيل أسرع بكثير عند إخراج النتائج إلى وحدة التحكم.

في تجربتي، وليس الوصول إلى قاعدة بيانات عالية الأداء، والسائقين ADO ليست بالسرعة برامج التشغيل الأصلية. أراهن إذا قمت باستبدال قاعدة البيانات مع قاعدة بيانات أكثر خطورة، كنت تجد تحسين الأداء.

نصائح أخرى

أولا - ليست هناك انخفاض الحاجة / إنشاء الجدول. إنشاء لمرة واحدة ومن ثم استدعاء "حذف من الصور"، إذا كنت ترغب في إعادة تعيينها. ثانيا - التعليق الخروج "Form1-> ADOCommand1-> تنفيذ ()؛" ونرى كيف أسرع بكثير يحصل. وهذا يدل على ما إذا كانت المشكلة هي في إنقاذ إلى قاعدة البيانات.

إذا كنت تخطط لتطوير بعض الاشياء الخطيرة في المستقبل، ثم أوصى أن ننظر جولة لحلول قاعدة بيانات أفضل. (جزءا لا يتجزأ من فايربيرد، الخلية المدمجة، الخ).

لماي هناك عناصر CBuilder مكتبة و- جيد جدا للاستخدام

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top