تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
قاعدة بيانات مضمنة مع البرنامج
#1
اخطاءت بوضع الموضوع هنا مع ان فيه أمثلة ولكن كنت اريده بموضوع المقالات

الموقع 

PHP كود :
https://archive.codeplex.com/?p=dbfdotnet 


باختصار اذا كنت تتحدث عن السرعة dBase او DbfDotNet هي ما نتحدث عنه .
هي قاعدة بيانات تتعامل مع القرص وتستطيع التعامل مع قواعد بيانات عديدة بنفس الوقت وهي لا تتعامل مع الذاكرة .

اذا لدينا كلمتين هنا ، سرعة ، ومساحة صغيرة .

في DbfDotNet يتم إجراء جميع أعمال تحويل البيانات تلقائيًا.
إطار كيان بسيط للغاية
حجم ملف Dll اخر مرة كان حجمه 50 كيلو 

باجراء مقارنة صغيرة لنرى قاعدة بياناتنا هذه


PHP كود :
Dbf.Net 

Opening DbfDotNetDatabase
185 ms
Insert 1000 individuals
39 ms
Read individuals sequentially
5 ms
Read individual randomly
3 ms
Modifying individuals
21 ms
Create DateOfBirth index
77 ms
     Michael Simmons 22
/07/1909
     Mark Adams 21
/09/1909
     Charles Edwards 28
/09/1909
     
... total 1000 records
Enumerate Individuals by age
36 ms
Closing DbfDotNetDatabase
44 ms 

اذا ماذا عن Ado.net


PHP كود :
Opening ADO.Net Database459 ms
Insert 1000 individuals
80601 ms
Read individuals sequentially
1655 ms
Read individual randomly
1666 ms
Modifying individuals
75574 ms
Create DateOfBirth index
80 ms
     Michael Simmons 22
/07/1909
     Mark Adams 21
/09/1909
     Charles Edwards 28
/09/1909
     
... total 1000 records
Enumerate Individuals by age
29 ms
Closing ADO
.Net Database0 ms 

فرق رهيب أليس كذلك

أنها اسرع بحوالي 400 مرة من ثقنية Ado.net ولو كانت على SqlServer نفسه وبشحمه ولحمه

أنشاء الجداول في قاعدة بياناتنا هذه


PHP كود :
DbfTable<dbfdotnetindividualmIndividuals;

void CreateIndividualTable()
{
 
 mIndividuals 
 
   new DbfTable<dbfdotnetindividual>(
 
     @"individuals.dbf"
 
     Encoding.ASCII
 
     DbfDotNet.DbfVersion.dBaseIV);
}


class 
Individual
 
DbfDotNet.DbfRecordIIndividual
 
{
 
 [DbfDotNet.Column(Width 20)]
 
 public string FIRSTNAME;
 
 [DbfDotNet.Column(Width 20)]
 
 public string MIDDLENAME;
 
 [DbfDotNet.Column(Width 20)]
 
 public string LASTNAME;
 
 public DateTime DOB;
 
 [DbfDotNet.Column(Width 20)]
 
 public string STATE;
 } 


في Ado.net


PHP كود :
Connection _cnn null;


void ITestDatabase.CreateIndividualTable()
{
 
 _cnn = new System.Data.Connection(
"Data Source=adoNetTest.db");
 
 _cnn.Open();
 
 using (DbCommand cmd _cnn.CreateCommand())
 {
 
  cmd.CommandText "CREATE TABLE 
     INDIVIDUAL (ID int primary key, 
     FIRSTNAME VARCHAR(20), 
     MIDDLENAME VARCHAR(20), 
     LASTNAME VARCHAR(20), 
     DOB DATE, 
     STATE VARCHAR(20))"
;

 
   cmd.ExecuteNonQuery();
 
 }



ادخال البيانات في فيها


PHP كود :
void InsertNewIndividual(
 
  int id
 
  string firstname,
 
  string middlename,
 
  string lastname,
 
  DateTime dob,
 
  string state)
{
 
 var indiv mIndividuals.NewRecord();
 
 indiv.FIRSTNAME firstname;
 
 indiv.MIDDLENAME middlename;
 
 indiv.LASTNAME lastname;
 
 indiv.DOB dob;
 
 indiv.STATE state;
 
 indiv.SaveChanges();


أما في Ado.net


PHP كود :
void InsertNewIndividual(
 
 int id
 
 string firstname
 
 string middlename
 
 string lastname,
 
 DateTime dob
 
 string state)
{
 
using (DbCommand cmd =
 
  _cnn.CreateCommand())
 {
 
 cmd.CommandText string.Format(
 
  "INSERT INTO INDIVIDUAL (ID,
    FIRSTNAME, MIDDLENAME, LASTNAME, 
    DOB, STATE) VALUES({0},
    '{1}', '{2}', '{3}', 
    '{4}', '{5}');"
,
 
  idfirstnamemiddlename,
 
  lastname,
 
  dob.ToString("yyyy-MM-dd HH:mm:ss"),
 
  state);
 
 cmd.ExecuteNonQuery();
 }


فرق كبير في الكود وفي حجمه لاحظ NewRecord وايضا SaveChange في الاعلى


الاستعلام برقم الـ ID في قاعدة بياناتنا


PHP كود :
IIndividual GetIndividualById(int id)
{
 
 DbfDotNetIndividual result =
 
   mIndividuals.GetRecord(id);
 
   return result;


في Ado.net


PHP كود :
IIndividual GetIndividualById(int id)
{
 
using (DbCommand cmd =
 
  _cnn.CreateCommand())
 {
 
 cmd.CommandText string.Format(
 
   "SELECT * FROM INDIVIDUAL
     WHERE ID=" 
id);
 
 var reader cmd.ExecuteReader();
 
 try
  
{
 
  if (reader.Read())
 
   return GetNewIndividual(reader);
 
  else return null;
 
 }
 
 finally
  
{
 
  reader.Close();
 
 }
 }
}

Individual GetNewIndividual(
DbDataReader reader)
{
 var 
res = new Individual();
 
res.ID reader.GetInt32(0);
 
res.FirstName reader.GetString(1); 
 
res.MiddleName reader.GetString(2);
 
res.LastName reader.GetString(3);
 
res.Dob reader.GetDateTime(4);
 
res.State reader.GetString(5);
 return 
res;
}

 class 
Individual IIndividual
 
{
 
 public int ID getset; }
 
 public string FirstName getset; }
 
 public string MiddleName getset; }
 
 public string LastName getset; }
 
 public DateTime Dob getset; }
 
 public string State getset; }
 } 


حفظ التغييرات


PHP كود :
void SaveIndividual(
 
 Individual individual)
{
 
 individual.SaveChanges();


في Ado.net


PHP كود :
void SaveIndividual(
 
 IIndividual individual)
{
 
using (DbCommand cmd =
 
  _cnn.CreateCommand())
 {
 
 cmd.CommandText string.Format(
 
   "UPDATE INDIVIDUAL
 SET DOB='{1}' WHERE ID={0};"
,
 
individual.ID,
 
individual.Dob.ToString(
 
  "yyyy-MM-dd HH:mm:ss"));
 
 cmd.ExecuteNonQuery();
 }



لترتيب البيانات

PHP كود :
IEnumerable<Individual>
 
 IndividualsByAge()
{
 
 foreach (Individual indiv
    in mDobIndex
)
 
 {
 
   yield return indiv;
 
 }


في Ado.net


PHP كود :
IEnumerable<Individual
 
 IndividualsByAge()
{
 
using (DbCommand cmd =
 
  _cnn.CreateCommand())
 {
 
 cmd.CommandText string.Format(
 
   "SELECT * FROM INDIVIDUAL
    ORDER BY DOB"
);
 
 var reader cmd.ExecuteReader();
 
 try
  
{
 
  while (reader.Read())
 
  {
 
   yield return 
 
     GetNewIndividual(reader);
 
  }
 
 }
 
 finally
  
{
 
  reader.Close();
 
 }
 }


سوف ارفق ملف Demo وملف مشروع مفتوح لاتنسي تضمين الملف DbfDotNet.dll مع المشروع ليعمل

لمزيد من المعلومات يمكن مراجعة المصدر هنا


PHP كود :
https://www.codeproject.com/Articles/36895/Building-an-embedded-database-engine-in-C 


الملفات المرفقة
.zip   DbfDotNet_version_1.0_Demo_Only.zip (الحجم : 35.4 ك ب / التحميلات : 92)
.zip   DbfDotNet_version_1.0_Source.zip (الحجم : 65.33 ك ب / التحميلات : 122)
الرد }}}
تم الشكر بواسطة: khodor1985 , sendbad100 , عبد العزيز البسكري , elgokr
#2
وعليكم السلام ورحمة الله وبركاته

اجل اخ كودور انا قمت بتجربتها اليوم فقط وتأكدت من سرعتها الكبيرة فعلا

ووضعت في بداية الصفحة رابط للموقع وفي نهاية الصفحة رابط لشرح عنها 
وهناك مثالين في المرفقات

ومن يتحصل على فيديوهات او مزيد من الشرح سوف نضعه هنا
الرد }}}
تم الشكر بواسطة: sendbad100 , elgokr
#3
جزاك الله خيرا وبارك فيك أخي الفاضل
لا إله إلا الله وحده لا شريك له له الملك وله الحمد وهو على كل شئ قدير
سبحان الله وبحمده سبحان الله العظيم
سبحان الله والحمد لله ولا إله إلا الله والله أكبر ولا حول ولا قوة إلا بالله العلى العظيم
رب أغفر لي 

الرد }}}
تم الشكر بواسطة: sendbad100 , elgokr
#4
السلام عليكم 

الله يعطيك الصحة والعافية 

ويبارك فيك وفي عملك 

لم استطع متاعبعت كل موضوعاتك اليوم  "اقصد تحميل الامثلة والتجربة"  لانه كثيرة


تم نقل الموضوع حسب رغبتك  لقسم المقالات
الرد }}}
تم الشكر بواسطة: viv , elgokr
#5
يبدو حتى الان لا يوجد من تكلم عن قاعدة البيانات هذه بالمواقع العربية

إقتباس :https://www.google.com.ly/search?q=DbfDo...00&bih=874
الرد }}}
تم الشكر بواسطة: elgokr , sendbad100


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  رقابة قاعدة البيانات (التحديث التلقائي للبيانات ) SqlDependency قناص المدينة 0 529 05-10-23, 04:43 PM
آخر رد: قناص المدينة
Video [درس فيديو] حل مشكلة تغيير مسار قاعدة البيانات مع تقارير كريستال ريبورت رمضان272 0 1,694 23-04-22, 05:56 AM
آخر رد: رمضان272
  [شرح] اتصال بقاعدة بيانات اكسيس , اضافة بيان , تعديل بيان , حذف بيان , عرض البيانات . ahmed salam 25 38,267 23-02-22, 06:04 PM
آخر رد: رضوان الجماعي
  معالجة التنبيهات في البرامج (استقبال تنبيهات داخل البرنامج) Dev Express ابو ليلى 9 9,291 10-02-22, 09:55 PM
آخر رد: عبدالحميد حسني
  تنفيذ سكربت القاعدة مع انطلاق البرنامج + تحديث التعديلات على القاعدة ابو ليلى 2 5,076 02-07-21, 09:05 PM
آخر رد: naserflaha71
  دمج قاعدة بيانات SQL Server 2008 مع المشروع بالـ VBNET snipercoder 4 8,211 12-11-20, 06:01 PM
آخر رد: lion4
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى SQL aljzazy 3 3,302 17-04-20, 09:27 PM
آخر رد: الوايلي
  [درس فيديو] كيف تحول اي قاعدة بيانات اكسس الى mysql aljzazy 0 2,319 10-04-20, 09:05 PM
آخر رد: aljzazy
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,582 29-03-20, 12:50 PM
آخر رد: 13adam123
  [SQL] تحسين أداء وسرعة قاعدة البيانات SQL SERVER اسامه الهرماوي 0 3,597 28-10-19, 03:12 AM
آخر رد: اسامه الهرماوي

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم