آشنايي با DBISAM (بخش دوم): نوشتن يك برنامه Desktop
در اين مقاله به بررسي نحوه ايجاد يك برنامه Desktop با استفاده از DBISAM و چگونگي در نظر گرفتن پيشنيازهاي لازم براي تبديل آن به يك برنامه Client/Server در آينده خواهيم پرداخت. حالتهايي كه بررسي خواهند شد عبارتند از:
A) برنامه قرار است در محيط تك كاربره اجرا شود.
B) برنامه طوري نوشته شود كه امكان تبديل به نسخه Client/Server در آينده در نظر گرته شود.
A) برنامه قرار است در محيط تك كاربره اجرا شود: در اين حالت با استفاده از كامپوننت Table و Query ويژه DBISAM (بنامهاي TDBISAMTable و TDBISAMQuery) و بدون انجام تنظيمات خاصي به جداول مربوطه متصل ميشويم. فرض كنيد ميخواهيم يك برنامه ساده ايجاد كنيم كه در آن از يك جدول براي نگهداري مشخصات كاربران استفاده ميشود.
مراحلي كه بايد طي شوند عبارتند از:
ايجاد جداول مربوطه: 1) برنامه Database System Utility را اجرا كنيد.
2) از منوي File گزينه New Table را انتخاب كنيد. پنجره New Table باز خواهد شد .
3) فيلدهاي جدول را بصورت زير تعريف كنيد: Primary Index Required Size Data Type Field Name Yes Yes 0 AutoInc UserID No Yes 20 String UserName No Yes 12 String Password No No 0 Date RegDate
4) اكنون از ليست Language گزينه Farsi را انتخاب كنيد. اينكار باعث فعال شدن Sort و ديگر امكانات فارسي ميشود .
5) براي ذخيره جدول بر روي دكمه Save كليك كنيد.
6) در پنجره Save new table as گزينه Connection Type بصورت پيش فرض بر روي Local (Single/Multi User) قرار دارد و اين همان چيزي است كه ما اكنون ميخواهيم.
7) در قسمت Available Databases بر روي دكمه Select كليك كرده و مسير مقصد را مشخص كنيد.
8) در قسمت Save As نام فايل جدول را مشخص كنيد (در اينجا ما UserInfo را وارد كردهايم).
استفاده از جداول ايجاد شده در يك پروژه در دلفي:
اكنون كه جداول موردنياز آماده شدهاند وقت آنستكه از آنها در يك پروژه واقعي در دلفي استفاده كنيم. براي انجام اينكار مراحل زير را طي كنيد:
1) دلفي را اجرا كنيد.
2) در Component Palette صفحه DBISAM را فعال كنيد .
3) يك كامپوننت TDBISAMTable بر روي فرمتان قرار دهيد.
4) در ////Object//// Inspector مسيري كه جداول را در آنجا ذخيره كردهايد را در مشخصه DatabaseName وارد كنيد.
5) مقدار مشخصه TableName را از ليست انتخاب كنيد
UserInfo). 6) روي كامپوننت DBISAMTable1 بر روي فرم دابل كليك كنيد.
7) در پنجره //Form//1.DBISAMTable1 كه باز شده است رايت كليك و گزينه Add all fields را انتخاب كنيد. اينكار باعث ميشود فيلدهاي جدول بصورت كامپوننتهاي جداگانه در دسترس برنامه قرار گيرد.
8) اكنون از صفحه Data Access در Component Palette يك كامپوننت TDataSource بر روي فرم قرار دهيد.
9) مشخصه Dataset كامپوننت DataSource1 را بر روي DBISAMTable1 قرار دهيد.
10) اكنون وقت وصل كردن اين مجموعه به يك يا چند كامپوننت Data-Aware است. از صفحه Data Controls در Component Palette يك كامپوننت TDBGrid انتخاب كرده و بر روي فرم قرار دهيد.
11) مشخصه DataSource كامپوننت DBGrid1 را بر روي DataSource1 قرار دهيد.
12) مشخصه Active كامپوننت DBISAMTable1 را برابر True قرار دهيد. فرم تمام شده مانند تصوير 7 خواهد بود.
13) برنامه را اجرا كنيد.
اكنون ميتوانيد مانند برنامههاي معمول نوشته شده با دلفي در DBGrid به افزودن، ويرايش و حذف دادهها بپردازيد. همانطوركه ديديد ايجاد يك برنامه بانك اطلاعاتي معمولي با DBISAM درست مانند ايجاد يك برنامه با استفاده از BDE است و تنها تفاوت آن استفاده از TDBISAMTable بجاي TTable است. بطور كلي براي استفاده از DBISAM بجاي BDE كافي است معادل كامپوننتهاي BDE در DBISAM استفاده كنيد.
B) برنامه طوري نوشته شود كه امكان تبديل به نسخه Client/Server در آينده در نظر گرفته شود: براي تعبيه امكان تبديل يك برنامه به نسخه Client/Server بايد 2 كامپوننت TDBISAMSession و TDBISAMDatabase را به فرم برنامهتان اضافه كنيد. Session چيست؟ در برنامه نويسي بانكهاي اطلاعاتي هر Session بمنزله يك كاربر ميباشد. بعنوان مثال اگر قرار باشد 3 كاربر به يك سرور بانك اطلاعاتي (Database Server) متصل شوند اين سرور 3 Session خواهد داشت.
كاربرد كامپوننت Database چيست؟
در برنامه نويسي بانكهاي اطلاعاتي در دلفي هر كامپوننت Database نماينده يك Database واقعي است. يك Database واقعي معمولا يك فولدر يا دايركتوري حاوي تعدادي جدول (Table) و فايلهاي مرتبط با آنها ميباشد. كامپوننت Database بما كمك ميكند تا تمام جداول مرتبط با هم را در قالب يك Database در پروژه گروهبندي كنيم. مزيت ديگر استفاده از كامپوننت Database اينستكه ميتوان كليه مشخصات يك Database واقعي (مسير نگهداري جداول، ...) را در آن تنظيم كرده و در كامپوننتهاي Table و Query بجاي مشخص كردن مسير محل نگهداري جداول براي هر كدام، فقط مشخصه DatabaseName آنها را برابر نام تعريف شده در كامپوننت Database قرار دهيم. بدين ترتيب با عوض كردن مقادير در كامپوننت Database تمام Table ها و Query هاي متصل به آن نيز از تنظيمات آن پيروي خواهند كرد. اكنون كه با مفاهيم لازم آشنا شديد اقدام به انجام تغييرات در برنامهاي كه قبلا ايجاد نمودهايم ميكنيم تا امكان تبديل آن به نسخه Client/Server در آينده را به آن اضافه كنيم.
1) از صفحه DBISAM در Component Palette يك كامپوننت TDBISAMSession انتخاب كرده و بر روي فرم قرار دهيد.
2) مشخصههايي كه فعلا بايد در اين كامپوننت تنظيم كنيد عبارتند از:
AutoSessionName = True PrivateDir فعال كردن مشخصه AutoSessionName باعث ميشود خود DBISAM، Session ها را بصورت مقتضي نامگذاري كند. اين امكان بخصوص زماني مفيد است كه چند كاربر با استفاده از يك نرمافزار واحد (مثلا همين برنامه) بخواهند به Database Server متصل شوند. در چنين حالتي اگر نام Session ها يكسان باشد كاربر اول وارد ميشود، اما ورود كاربران ديگر مشكلاتي را بهمراه خواهد داشت.امكان AutoSessionName اين مشكل را با نامگذاري اتوماتيك Session ها حل ميكند. DBISAM هنگام باز كردن يك جدول با استفاده از Table يا Query يك نسخه موقتي از جدول مربوطه را در جايي ايجاد ميكند و با آن كار ميكند، سپس تغييرات را در جدول اصلي اعمال ميكند. استفاده از اين جدول موقتي براي سرعت بخشيدن به كار با جداول Database ميباشد. اگر شما مسيري را براي نگهداري فايلهاي موقتي ايجاد نكنيد سرعت كار با جداول (خصوص در محيط Client/Server) پايين خواهد بود. شما ميتوانيد با مقدار دادن به مشخصه PrivateDir در كامپوننت DBISAMSession اين مشكل را حل كنيد.
3) از صفحه DBISAM در Component Palette يك كامپوننت TDBISAMDatabase انتخاب كرده و بر روي فرم قرار دهيد.
4) در مشخصه DatabaseName آن يك عبارت (مثلا dbDatabase1) وارد كنيد.
5) همانطور كه ميبينيد مقدار SessionName در كامپوننت DBISAMDatabase1 بصورت اتوماتيك مقداردهي شده و برابر DBISAMSession1_1 قرار گرفته است.
6) به مشخصه DatabaseName كامپوننت DBISAMTable1 نگاه كنيد. اكنون اين مشخصه حاوي گزينهاي بنام dbDatabase1 (و يا عبارتي كه شما قبلا در مرحله 4 مشخص كردهايد) ميباشد . آنرا انتخاب كنيد.
7) در كامپوننت DBISAMDatabase1 مشخصه Directory را برابر مسير كنوني جداول قرار دهيد.
8) مقدار مشخصه Active كامپوننت DBISAMTable1 را برابر True قرار دهيد. همانطوركه ميبينيد اينكار باعث فعال شدن اتوماتيك كامپوننتهاي DBISAMDatabase1 و DBISAMSession1 نيز ميشود.
اكنون برنامه ما اين قابليت را دارد كه در كمتر از چند دقيقه تبديل به نسخه Client/Server شود.
نطر یادتون نره ها 