برقراری ارتباط با دیتابیس mysql در سی شارپ
سلام دوستان فکر می کنم اولین سایت فارسی زبان باشیم که داریم آموزش برقراری ارتباط با دیتابیس mysql در سی شارپ رو میگیم ! یعنی من به شخصه هیچ چیزی پیدا نکردم ! بگذریم برویم به سراغ ایجاد آن برای اینکه بتوانیم با دیتابیس mysql ارتباط برقرار بکنیم (به آن وصل شویم ) نیاز داریم تا از یکی از کتاب خانه ای سی شارپ را به پروژه خود اضافه کنیم برای این کار دو روش وجود دارد.
اگر visual studio شما 2010 به بالا است می توانید از روش اول استفاده کنید در غیر اینصورت باید به صورت دستی یک dll را import کنید.
روش اول
در قسمت سمت راست بر روی solution explorer کلیک راست کرده سپس از توی لیست باز شده گزینه manage Nuget packegs… را کلیک کرده در اینجا یک صفحه برای شما باز می شود سپس در قسمت جستجو این کلمات (mysql.data) رو تایپ کرده و صبر کنید جستجو به پایان برسد پس از آن اولین چیزی را که پیدا کرد نصب کنید (کافی است روی دکمه install کلیک کنید ) کمی صبر کنید تا dll های مورد نیاز به صورت اتوماتیک دانلود شوند.
روش دوم
این dll را از این لینک دانلود کرده و از طریق add reference آن را به پروژه اضافه کنید.
برای استفاده از این کتاب خانه در قسمت using (بخشی که کتاب خانه ها رو اضافه می کنیم ) کد زیر را قرار دهید.
1 2 | using MySql.Data; using MySql.Data.MySqlClient; |
اگر بخواهید در سیستم خود به دیتابیس mysql وصل شوید ( یعنی با برنامه هایی مانند wamp , xampp و… دیتابیس را به صورت داخلی (local) ایجاد کرده باشید) نیاز دارید از خط زیر برای اتصال به آن دیتابیس استفاده کنید.
1 | string connectionString = "Server=localhost;Database=نام دیتابیس;Username=نام کاربری;Password=پسورد دیتابیس;"; |
اما اگر می خواهید به یک دیتابیس بروی یک سرور وصل شوید خط زیر را جایگزین بالایی کنید.
1 | string connectionString= "Server=ایپی وب سرور یا ایپی سایت ;Port=3306;Database=نام دیتابیس;User=نام کاربری;Password=پسورد"; |
دقت کنید در بالا پورت را نباید تغییر دهید این port برای اتصال به دیتابیس لازم است و نکته: ممکن است این پورت توسط شخصی که هاست را از آن تهیه کرده اید بسته شده باشد علت بسته بودن آن هم داشتن باگ exploit است.برای باز کردن این پورت کافی است در خواست کنید تا پورت را برایتان بازکنند.
حال زمان بررسی برقراری ارتباط با mysql است. برای این کار از کد زیر استفاده می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 | string connetionString = null; MySqlConnection cnn; cnn = new MySqlConnection(connectionString); try { cnn.Open(); MessageBox.Show("Connected! "); cnn.Close(); } catch (MySqlException ex) { MessageBox.Show(ex.Number.ToString()); } |
در صورتی که برقرای ارتباط به درستی انجام شود پیغام Connected به کابر نمایش می دهد در غیر اینصورت خطاهای احتمالی زیر برای شما نمایش داده می شود ما به برخی از این خطا ها رسیدیگی می کنیم
اگر پیام نمایش داده شده برابر با کد 0 بود یعنی نمی تواند به سرور متصل شود و اگر کد برابر با 1045 بود یعنی نام کاربری یا پسورد دیتابیس را اشتباه وارد کرده اید و اگر برابر با 1042 بود امکان برقراری ارتباط با ادرس ip که شما داده اید وجود ندارد ( به شکل معنی ساده نمی تواند نام host یا ایپی را resolve کند).
در آینده نزدیک (پست بعدی نحوه ( DML (Insert, Update, Select, Delete ) را خواهیم گفت.
انشالله که مفید بوده باشد.
با عرض سلام و خسته نباشید متاسفانه در این روش وقتی یک دیتارو insert میکنم حتی دیتابیس utf8-per-ci هست بازم رشته های فارسی تبدیل به ؟؟؟ علامت سوال میشوند
سلام باید Utf8 سپس با در برنامه آن را decode کنید.
از کد زیر استفاده کنید مشکل حل خواهد شد.
موفق باشید.
سلام میشه دقیق تر توضیح بدید؟
سلام
برای اتصال حتما باید سرور دراختیار داشت و اتصال به mysql سایت امکان پذیر نیست؟
سلام خیر لازم به سرور نیست شما می توانید از xampp یا برنامه های مشابه استفاده کنید به دلایل مسایل امنیتی اتصال به mysql سایت ممکن پذیر نیست.
سلام ببخشید من از نرم افزار xampp استفاده میکنم ولی یک مشکلی که هست اینه که نمیدونم یوزر نیم و پسورد رو چی بزنم ؟؟؟؟؟ میشه یگ راهنمایی کنید چون برای من کد 0 رو نمایش میده وقتی user name و password را نمیزنم
سلام باید از داخل خود xampp بخش phpmyadmin یک کاربر تعریف کنید
یوزر پیشفرض phpmyadmin در xampp برابر با زیر است.
موفق باشید.
سلام خسته نباشید خوب من این روش رو حدود ۵۰ بار انجام دادم نه تنها به روش شما بلکه به ده ها روش دیگر که در یوتویب و… بود ولی توی هیچ کدوم من نتونستم به پایگاه داده وصل بشوم دلیل چیه؟ میشه یک راهنمایی بفرمایید که دلیل این که من نمیتونم به پایگاه داده وصل بشوم چیه چون دقیقا همه چیز رو درست انجام دادم ولی اصلا وصل نمیشه ????خسته شدم دیگه sql server هم که ده برابر بدتر مشکلات داره ???? لطفا کمک کنید
سلام و درود
مطمئنن مشکل شما در بخش connection یا اتصال هست از چه مجازی سازی استفاده می کنید ؟
مجازی ساز یعنی چی؟ من دقیقا نمیدونم شما فرض کن من یک باتن ساختم و وقتی میزنم روش باید try catch اجرا بشه که کانکت میشه یا نه اگه کانکت شد بگه کانکت اگر نشد کنت کانکت حالا اینا به کنار من توی phpmyadmin یک دیتابیس به نام test1 دارم یوزرنیم root و پسورد هم pass1 توی لوکال هاست هم هست شما فقط کد هایی که باید توی قسمت کلیک اون باتن بدم رو بنویسید شاید من اشتباه مینویسم بعضی جاها رو
به احتمال زیاد Connection String شما درست نیست چون وقتی یک دیتابیس در phpmyadmin میسازید اصلا root پسورد نداره یعنی بدون پسورد است و باید در connectionstring آن را خالی بزارید اگر خودتون user تعریف کرده باشید اون موقع فرق می کند هنگام ساخت دیتابیس باید تمامی دسترسی ها را بدهید مثل عکس زیر
این دسترسی ها رو دادم و بله خودم یوزر درست کردم الان اروری که میده اینه
The host localhost does not support ssl connections
چطوری این مشکل رو رفع کنم؟
خط زیر را به ConnectionString اضافه کنید مشکل حل می شود.
سلام
با این روش میشه به mysql که درون هاست سی پنل هست متصل شد و بهش کوئری زد؟
سلام بله
سلام یوزر پیشفرض زمپ روت هست حتما یک یوزر بسازید کسایی که مشکل خوردید
سلام و عرض خسته نباشید خدمت شما دوست عزیز من همه کارها رو انجام دادم همه چی درسته فقط دریک جا مشکل دارم ویژوال من 2012 هست وقتی میرم قسمت manage Nuget packegs میخوام mysql.data رو نصب کنم این خطا رو میده ‘
MySql.Data’ already has a dependency defined for ‘Google.Protobuf’.
لطفا راهنمایی کنید چون باعث میشه کتابخانه ها رو نشناسه. بعد اگه لطف کنین دستورات درج وحذف و.. رو برام ارسال کنید ممنون میشم از لطفتون. باتشکر
سلام خسته نباشین.
من فایل dll به برنامه اضافه کردم using هایی هم که گفته بودید اضافه کردم ولی MySqlConnection رو نمیشناسه
میشه کمکم کنید ممنون.
سلام خسته نباشید بابت زحماتی که برای تولید مقاله های با کیفیت میکنید ازتون ممنونم
بنده یک مشکلی در قسمت اتصال دیتابیس mysql به آیپی public دارم درواقع زمانی که بنده میخوام به روش آیپی عمومی کانکت بشم ارور 1042 رو میده زمانی که بنده با آیپی 127.0.0.1 یا همون لوکال کانکت میشم مشکلی نداره اما با آیپی هایی مثل مثلا 192.168.1.10 یا آیپی های عمومی مثل 89.34.50.104 کانکت میشم خطا 1042 بهم میده کد متغیر کانکشن استرینگ بنده هم به صورت زیر هستش:
“Server=192.168.1.3;Port=3306;Database=csharp;Username=root;Password=;”
ممنون میشم راهنماییم کنید
با تشکر.
سلام.
من این کارارو انجام دادم و لی ارور 1042 گرفتم در صورتی که با cmd پینگ میشه و هیچ ایرادی نداره بجای ای پی هم ادرس سایت رو زدم بازم ارور 1042 میده آیا مشکل از پورته که بسته شده یا مشکل دیگه ای داره
سلام خسته نباشین.
من فایل dll به برنامه اضافه کردم using هایی هم که گفته بودید اضافه کردم ولی MySqlConnection رو نمیشناسه
میشه کمکم کنید ممنون.
سلام خدمت دوستان عزیز ببخشید من دیتابیس ساختم با 8 تا تیبل.
با php به دیتابیسم می توان وصل شم اما با سی شارپ نمیتوانم به دیتابیس وصل شم و ارور 0 رو ریترن میکنه . هم xmapp و هم connector net را نصب کردم . واقعا نمی دونم چرا این مشکل وجود داره اگی کسی میتونه کمک کنه تروخدا دریغ نکنه .