PDA

View Full Version : سوال: اتصال دلفی و MySql



behzadboloori
شنبه 06 آذر 1389, 00:26 صبح
چطوری میشه دلفی رو به MySql از طریق ADOConnection وصل کرد؟
من libmysql.dll رو هم دارم ولی نمیتونم ازش استفاده کنم.

behzadboloori
شنبه 06 آذر 1389, 12:27 عصر
شاید لازم باشه یه کم بیشتر توضیح بدم.

درایورهای ODBC برای وصل شدن به بانک اطلاعاتی در سایت mysql وجود دارد. ولی مشکل اینه که برای اجرای برنامه در هر کلاینت باید Connection مربوطه رو Set کنیم. و این برای یوزر هایی که د.ر از دسترس هستند خیلی سخته.

استفاده از OLEDB Provider for MySql این ویژگی رو داره که بدون نیاز به هیچ نصب یا تنظیم اضافه ای میتونیم تنها با اجرای برنامه به بانک اطلاعاتی وصل شیم.
مشکل من اینه که توی سیستم من درایوری برای این کار نیست و باید درایورش رو نصب کنم.
من یک برنامه برای این کار توی اینترنت پیدا کردم ولی رجیستر کردنش منوط به اتصال به اینترنته که برای کاربرای من ممکن نیست. برای همین یه چیزی مثل MDAC لازم دارم که بتونم موقع نصب برنامه اونرو هم بدون اینکه کاربر بفهمه نصب کنم و نیاز به کار اضافه یی نداشته باشم.

vcldeveloper
شنبه 06 آذر 1389, 15:30 عصر
برای اتصال به MySQL در دلفی، باید مشخص کنید که با چی میخواید وصل بشید. بعضی شرکت ها کامپوننت های اختصاصی خودشان را دارند، مثل Devart. گزینه دیگه استفاده از درایور ODBC با استفاده از ADO هست. گزینه دیگه که خودِ دلفی ارائه میکنه، استفاده از درایور DBExpress در دلفی هست.

باید درایور Client مربوط به MySQL را در هر کلاینت داشته باشید، که همون libmysql.dll هست، اما باید به نسخه اش دقت کنید. نسخه های قدیمی دلفی، به نسخه 4 آن نیاز دارند. دلفی 2010 و نسخه بعد از آن به نسخه 5 این فایل نیاز دارند. برای دریافت این فایل هم باید MySQL را دانلود کنید، و از پوشه bin این فایل را استخراج کنید.

در نهایت اگر از DBExpress استفاده کنید، باید به همراه برنامه تان، دو فایل libmysql.dll و فایل dll مربوط به درایور DBExpress را هم به سیستم کاربر منتقل کنید.

behzadboloori
شنبه 06 آذر 1389, 18:41 عصر
من از ADOConnection استفاده میکنم و برای وصل بودن این کانکشن نیاز به OLEDB Provider وجود داره. برای همین من OLEDB Provider for mysql رو نیاز دارم.
من از همین کانکشن و درایورهایی که از قبل در دلفی وجود داره برای اتصال به MS-SQL و Access استفاده کردم. حالا میخوام فقط با انتقال بانک به mysql و تغییر دادن درایور از mysql استفاده کنم.
البته دلیل اصلی این کار هم اینه که کارفرمای من میخواد بانک اطلاعاتیش روی اینترنت باشه و از طرفی هم نمیخواد پول به بانک MS-SQL بده و با هزینه کمتر میخواد mysql رو به عنوان بانک اطلاعاتیش انتخاب کنه. منم مجبورم بانک اطلاعاتی و اتصال برنامه به بانک رو تغییر بدم.

vcldeveloper
شنبه 06 آذر 1389, 23:58 عصر
من از ADOConnection استفاده میکنم و برای وصل بودن این کانکشن نیاز به OLEDB Provider وجود داره.
شما درایور ODBC مربوط به MySQL را نصب کنید، سپس با استفاده از OLE DB Provider for ODBC به این درایور متصل بشید.

behzadboloori
یک شنبه 07 آذر 1389, 07:51 صبح
من از همون اول گفتم که نمیخوام از ODBC استفاده کنم و اونم به این دلیله که برای هر کاربر باید یه بار اونو تنظیم کنم.
من احتیاج به درایوری دارم که نیازی به تنظیم نداشته باشه.
برای همین اگه چیزی مثل OLEDB Provider for mysql وجود داشته باشه برای من خیلی ایده آله.
در ضمن روش استفاده از ODBC رو قبلا استفاده کردم و جواب گرفتم ولی چون بانک اطلاعاتی روی اینترنته، نمیتونم به همه کاربرام برای تنظیم ODBC دسترسی داشته باشم. (برنامه روی کلاینت و بانک روی اینترنت)
داره کم کم این سوال برام پیش میاد که اصلا همچین درایوری داریم؟

vcldeveloper
یک شنبه 07 آذر 1389, 10:36 صبح
داره کم کم این سوال برام پیش میاد که اصلا همچین درایوری داریم؟
شاید این به دردتون بخوره، البته قدیمی هست:
http://dev.mysql.com/get/Downloads/Win32/MyOLEDB3.exe/from/pick

معمولا بانک های اطلاعاتی که توسط خودِ مایکروسافت عرضه میشند، یا اونهایی که کاربرد زیادی در سکوی ویندوز دارند، این نوع درایور را ارائه می کنند. استاندارد آزاد برای درایور نویسی بانک های اطلاعاتی همون ODBC هست.


نمیتونم به همه کاربرام برای تنظیم ODBC دسترسی داشته باشم. (برنامه روی کلاینت و بانک روی اینترنت)
با وجود یک درایور OLE DB برای MySQL ، تفاوت چندانی برای شما بوجود نمیاد، چون این درایور با ویندوز نصب نمی شد، و باید خودتان آن را بر روی هر کدام از کلاینت ها نصب می کردید.

behzadboloori
یک شنبه 07 آذر 1389, 23:21 عصر
آدرسی که داده بودید خالی بود. یعنی دیگه فایلی اونجا وجود نداشت.

من یه کم دیگه باید توضیح بدم. زمانی که من از OLEDB Provider for MS-SQL استفاده میکنم. زمان نصب برنامه هیچ چیز اضافه ای نصب نمیشه. حتی اگه کاربرا همون فایل اجرایی رو هم کپی کنن میتونن ازش استفاده کنن. برای استفاده از Jet نیاز به نصب MDAC روی کلاینت هست ولی اون هم تنظیمی لازم نداره. ولی استفاده از ODBC نیاز به تنظیم داره. برای همین من دنبال چنین درایوری برای Mysql میگردم. لزومی هم نداره که حتما OLEDB باشه. هر چیزی که تنظیمی نداشته باشه برای من خوبه. متاسفانه کاربرای من در حدی نیستن که چنین تنظیم کردنی رو ازشون بخوام.
هدف کلی از طرح این سوال یافتن راه حلی برای کمترین کار تخصصی توسط کاربره. کاربرای من نصب رو هم به زحمت انجام میدن!

vcldeveloper
دوشنبه 08 آذر 1389, 00:12 صبح
من یه کم دیگه باید توضیح بدم. زمانی که من از OLEDB Provider for MS-SQL استفاده میکنم. زمان نصب برنامه هیچ چیز اضافه ای نصب نمیشه. حتی اگه کاربرا همون فایل اجرایی رو هم کپی کنن میتونن ازش استفاده کنن. برای استفاده از Jet نیاز به نصب MDAC روی کلاینت هست ولی اون هم تنظیمی لازم نداره.
خب اون از کرامات مایکروسافت هست که پیش نیاز مربوط به محصولات خودش را در سیستم عامل خودش قرار میده، تا کار با محصولات خودش برای کاربران آسانتر باشه. نمونه های دیگه اش نصب .NET Framework به طور پیش فرض روی نسخه های مختلف ویندوز، یا وجود runtime library های مربوط به VB یا VC++ در ویندوز هست.


هر چیزی که تنظیمی نداشته باشه برای من خوبه.
لازم نیست تنظیم ODBC رو کاربرتان خودش انجام بده. ODBC را خودتان هم می تونید از طریق کد تنظیم کنید. در هر حال، گزینه مربوط به استفاده از DBExpress هم نیازی به تنظیم از طریق کاربر نداره، فقط باید دو تا DLL را در هنگام نصب برنامه، با برنامه تان به سیستم کاربر کپی کنید. اگر اصلا نمیخواید هیچ فایلی را به همراه برنامه در سیستم کاربر کپی کنید، باید برید سراغ بعضی کامپوننت های دلفی برای اتصال به MySQL مثل MyDAC (http://www.devart.com/mydac/) محصول شرکت Devart که در سمت کلاینت نیاز به فایل جانبی نداره. البته این کامپوننت تجاری هست.