# Native Code > برنامه نویسی در Delphi > بانک های اطلاعاتی در Delphi >  مهاجرت از ADO به UniDAC

## hadisalahi2

سلام به همگی دوستان گلم
عید همگی دوستان مبارک
ان شاالله سال جدید سال خوبی برای همه باشه.

بچه ها  من تصمیم دارم از *ADO* به *UniDAC* مهاجرت کنم

میخواستم ببینم ، دوستان کسی با این مجموعه کامپوننت کار کرده ؟
تا مزیت ها و معایبش رو نسبت به ADO برای بنده توضیح بده

و اینکه کلا این انتقال ، فکر خوبیه یا نه ؟

ممنون از همگی
یاحق

----------


## hp1361

سلام

سال نو شما و دیگر دوستان مبارک. سال پر باری برای همه دوستان باشد ایشالله

پیشنهاد من استفاده از FireDAC هستش. هم خوش دسته و هم اینکه خود دلفی بصورت داخلی ازش ساپورت میکنه

موفق باشید.

----------


## hadisalahi2

آیا امکاناتش از *UniDAC  و ADO* بهتر و بیشتره؟اگه امکانش هست بیشتر معرفی کن
ممنون میشم

----------


## golbafan

ado رو باید سپرد به دست خاک...

فایرداک هم کتابخانه هایی برای کار نیاز داره

بهترین گزینه همان unidac هست

----------


## hadisalahi2

> بهترین گزینه همان unidac هست


میشه لطفا یک کم از مزایاش نسبت به ADo , Firedac بیشتر توضیح بدید

----------


## golbafan

با یونی داک شما میتونید بدون نیاز به هرگونه کتابخانه ای دیتابیس رو کنترل کنید که بصورت دارکت اکسس ازش اسم میبرن
همچنین اکثر دیتابیسهای رایج رو ساچورت میکنه

شاید مهم تر از همه اینه که شما میتونید با استفاده از سیستم پارامتری دینامیکی که در اون هست با یک نوع کد از تمام دیتابیس ها استفاده کنید
موقعی این مساله قابل تامل میشه که بخواهید انتخاب دیتابیس رو به عهده کاربر بزارید و نرم افزار شما مولتی دیتابیس نوشته بشه
مثل نرم افزارهای حسابداری بزرگ خارجی که کاربر رو مجبور به استفاده از یک نوع خاص دیتابیس نمیکنن!

یکی دیگه از مزایا حالت مولتی پلتفرم بودنه: برای برنامه نویسی در دلفی و C++‎‎‎‎ و لازاروس و FPC طراحی شده و روی ویندوز مک لینوکس و freeBSD کار میکنه
 هم در حالت 32 و هم 64 بیتی...

در هر حال باید بگم تصمیم درستی گرفتی

----------


## soft-c

> با یونی داک شما میتونید بدون نیاز به هرگونه کتابخانه ای دیتابیس رو کنترل کنید که بصورت دارکت اکسس ازش اسم میبرن
> همچنین اکثر دیتابیسهای رایج رو ساچورت میکنه
> 
> یکی دیگه از مزایا حالت مولتی پلتفرم بودنه: برای برنامه نویسی در دلفی و C++‎‎‎‎‎ و لازاروس و FPC طراحی شده و روی ویندوز مک لینوکس و freeBSD کار میکنه
>  هم در حالت 32 و هم 64 بیتی...


خوب firedac هم این امکانات را داره :



> FireDAC is a unique set of *Universal Data Access Components*  for developing cross-platform database applications for Delphi,  C++‎Builder, and FreePascal. With its powerful common architecture, FireDAC enables native high-speed  direct access from Delphi to InterBase, SQLite, MySQL, SQL Server,  Oracle, PostgreSQL, IBM DB2, SQL Anywhere, Access, Firebird, Informix,  and more.

----------


## anouri

بنده حدود 7-8 سال هست که از ado به ابتدا mydac وسپس به unidac مهاجرت کردم.و الان واقعا از انتخابم راضیم.با یونیدک میتونم به هر نوع بانک اطلاعاتی وصل بشم.همینطور بسیار راحت هست کار کردن باهاش وسرعتش هم از ado بهتره. در مجموع از انتخابتون پشیمون نخواهید شد. ضمن اینکه اگه خواستید در محیط lazarus یا coetyphon کد بنویسید میتونید از این کامپوننت استفاده کنید.

در مورد گزارش ساز هم fastreport واقعا عالیه ضمن اینکه نسخه lazarus هم داره.

خواستید آخرین نسخه این کامپوننتها رو دانلود کنید به سایت downloadly.ir مراجعه کنید.
با تشکر
نوری

----------


## khoshblagh

با سلام خدمت دوستان
کسی میتونه در قالب یک فرم چگونگی استفاده از آن را توضیح بده. البته Demo آنرا من دیدم . ولی برای من که سالها از ado استفاده نمودم و معمولا با کدهای مورد نظر و پارامتریک اطلاعات را استخراج مینمایم چگونگی آن برایم مبهم است.متشکرم. :خجالت:

----------


## BORHAN TEC

> با یونی داک شما میتونید بدون نیاز به هرگونه کتابخانه ای دیتابیس رو کنترل کنید که بصورت دارکت اکسس ازش اسم میبرن
> همچنین اکثر دیتابیسهای رایج رو ساچورت میکنه


FireDac هم این قابلیت رو داره



> شاید مهم تر از همه اینه که شما میتونید با استفاده از سیستم پارامتری دینامیکی که در اون هست با یک نوع کد از تمام دیتابیس ها استفاده کنید
> موقعی این مساله قابل تامل میشه که بخواهید انتخاب دیتابیس رو به عهده کاربر بزارید و نرم افزار شما مولتی دیتابیس نوشته بشه
> مثل نرم افزارهای حسابداری بزرگ خارجی که کاربر رو مجبور به استفاده از یک نوع خاص دیتابیس نمیکنن!


FireDac هم این قابلیت رو داره ولی برای اینکه کاربر نهایی مجبور به استفاده از فقط یک RDBMS نشه بهتره که از فریم ورکی مثل TMS Aurelius استفاده بشه که واقعاً میتونید این مدل برنامه ها را بسازید و من هم ساختم  :لبخند گشاده!:  در این مورد این اصولی ترین روشی هست که بنده تا به امروز کشفش کردم!  :چشمک: 



> یکی دیگه از مزایا حالت مولتی پلتفرم بودنه: برای برنامه نویسی در دلفی و C++‎‎‎‎‎‎‎‎‎‎ و لازاروس و FPC طراحی شده و روی ویندوز مک لینوکس و freeBSD کار میکنه
> هم در حالت 32 و هم 64 بیتی...


FireDac هم این مزایا رو داره ولی باید اعتراف کرد که در این زمینه UniDac تا به اینجای کار قوی تر از FireDac عمل کرده که برای کسب اطلاعات بیشتر میتونید به مقاله زیر که به تازگی منتشر شده مراجعه کنید:
http://tndelphifan.blogspot.co.uk/20...omponents.html

البته بارها گفتم که انتخاب یکی از این دو محصول خیلی سخته چرا که هر دوتاشون واقعاً قوی ظاهر شدن و مثلاً به زودی FireDac از mongoDB هم پشتیبانی خواهد کرد و وارد دنیای Big Data خواهد شد ولی هنوز در مورد پشتیانی UniDac از big data خبری نیست!!!  :متعجب: 
http://community.embarcadero.com/blo...er-for-mongodb

----------


## hadisalahi2

ببخشید شاید این سوال یک کم آماتور باشه
اما در چندین تاپیک از بحث های دوستان که میخوندم با مشکلاتی در فایرداک مواجه بودن از قبیل اینکه ُ باید فایلهای خاصی همراه دیتابیس در سیستم مقصد وجود داشته باشه تا بشه از بانک استفاده کرد
آیا این موضوع صحت داره و اگه داره دقیقا باید چه فایلهایی باشه

اگه فایر داک در حد یونی داک هستش
من ترجیه میدم از فایر داک استفاده کنم ُ چون هر چی باشه از کامپوننت های پیش فرض دلفی شده و نیازی به نصب کامپوننت جدا رو نداره
مچکرم

----------


## soft-c

اما من فکر می کنم هر چی پروژه را با firedac جلو تر می برم و پروژه سنگین تر و پیچیده تر می شود به خطاهایی بر می خورم که یا قابل حل نیست یا باید کلی وقت بزاری تا شاید بتونی حلش کنی که اونم خیلی از وقت را می گیره و پروژه عقب می افته

----------


## Saeid59_m

سلام ولی من قابلیت AsyncConnection که تو Ado وجود داره رو تو UniDac نمی بینم .

----------


## hadisalahi2

> سلام ولی من قابلیت AsyncConnection که تو Ado وجود داره رو تو UniDac نمی بینم .


کاربردش چیه؟

----------


## یوسف زالی

با این قابلیت شما می تونی ران شدن یک کوئری رو به صورت غیر همزمان انجام بدی و در مدت ران شدن کوئری بری بقیه کارات رو انجام بدی!
من از روی همین خصیصه کامپوننت هایی هم ساختم.
بسیار خصیصه به درد بخوریه. امتحانش کنید.

----------


## Saeid59_m

بله یه کاربرد دیگش که من دوست دارم اینه که وقتی ارتباط با سرور برقرار نمی شه (به هر دلیل) دیگه برنامه هنگ نمی مونه تا ado جواب بده

----------


## Saeid59_m

ولی تو unicdac نیست
یا من بلد نیستم

----------


## Mahmood_M

گرچه UniDAC امکان اجرای Asynchronous Executing رو داره اما مشکل انتظار و هنگ کردن و امثال این رو میشه به وسیله ترد ها به راحتی حل کرد
UniDAC به مراتب بهتر از ADO هستش ، مخصوصا در روشهای اتصال به بانک و اینکه Provider ها رو راحت در اختیار قرار میده ، سرعتش در ارتباط های Remote با دیتابیس در سرور کاملا قابل قبوله
به عنوان مثال یک متد عالی به نام RefreshQuick داره که شخصا خیلی به دردم خورده و کارش به این صورته که فقط رکوردهای تغییر کرده ی بانک رو بروز می کنه و نیازی به Refresh کردن کل اطلاعات نیست
تنظیمات بسیار زیادی برای افزایش کارآیی و سرعت بانک - چه در اتصال و چه در پیمایش - داره
در کل ، راحتی کار با این کامپوننت و امکاناتی که داره کاملا به ADO می چربه و نکته دیگه اینکه UniDAC کاملا Thread-Safe هست و می تونید بدون مشکل درون Thread ازش استفاده کنید و مثل ADO نیازی به Initialize یا ... نیست
در مورد FireDAC هم توی تست های انجام شده معمولا کارآیی و سرعت بهتری نسبت به UniDAC داشته اما کار کردن باهاش دردسرهای آزار دهنده ای داره ( اگه قبلش با UniDAC کار کرده باشید ، این دردسرها براتون آزار دهنده میشه )
تنها چیزی که خواستم با UniDAC انجام بدم و راه حلی پیدا نکردم ارتباط با فایلهایی مثل Excel هست که با ADO امکانش وجود داره و در UniDAC تا جایی که من تحقیق کردم امکانش نیست ( که البته با این هدف ساخته نشده )
در کل با توجه به تجربه ای که در کار با این ابزارها داشتم شخصا دلیل خاصی برای ترجیح دادن ADO به UniDAC ندیدم

----------

