PDA

View Full Version : گفتگو: همه جا SQL دخالت داره



mmbguide
پنج شنبه 21 شهریور 1392, 11:51 صبح
سلام به همه دوستان

من مبتدی هستم و هنوز دارم کتاب میخونم تا سروته vb.net رو بفهمم چیه؟

در مبحث بانک اطلاعاتی تمام منابع آموزشی از روش های مختلفی برای ارتباط با داده ها و بانک اطلاعاتی استفاده میشه مثل Linq و DataSet و Entity Framework و شاید چیزای دیگه که فعلا بلد نیستم.

تو یکی از این منابع گفته شد بود که قبل از اجرای دستور در تمام روشها برنامه SQl profiler رو اجرا کنید تا ببینید چه چیزی در نتیجه اجرای دستور اتفاق میفته. واقعیت اینه که همیشه کدهای SQl هستند که در انتها با بانک اطلاعاتی ارتباط برقرار می کنند (البته اگه تا اینجا اشتباه متوجه داستان نشده باشم). حالا می خواستم بدونم چه مشکلی داره که داخل کدهای برنامه نویسی از دستورات SQL استفاه کنیم یا اینکه اصلا چرا DataSet و یا Entity وچیزای دیگه.

ممنون میشم اگه اطلاعاتی دارید کمک کنید تا از این سردرگمی در بیام

شهابسلطانی
پنج شنبه 21 شهریور 1392, 12:59 عصر
دوست من سلام
به این نکته توجه کنید که :
دستورات SQL با SQLserver خیلی فرق میکنه
SQL شامل دستوراتیه که مبانی اجرای یک سری عملیات هستند
ولی SQLserver یک دیتابیسه که اطلاعات رو توی خودش ذخیره میکنه البته توجه داشته باشید که از قسمت
پروسیژورهای SQLserver میتونید کد نویسی کنید و بعدا توی برنامتون ازش استفاده کنید
موفق باشید و سرافراز

r. salehi
پنج شنبه 21 شهریور 1392, 14:52 عصر
سلام دوست عزیز
چون خودم هم در چند سال اخیر خیلی از این سوالات شما را داشتم اجازه بدید مواردی را خدمت شما عرض کنم


شما هر جا که نیاز به جمع آوری داده و نگهداری انها داشته باشید متعاقبا به یک بانک اطلاعتی هم در پشت برنامه خودتون نیاز خواهید داشت. به عنوان نمونه تقریبا همه سایت های اینترنتی که می بینید و از جمله همین فروم یک پایگاه داده پشت خودشون دارند.
پایگاه داده هایی که در حال حاضر بیشتر مورد استفاده قرار می گیرند اوراکل و خانواده SQL و اکسس هستند که به همین ترتیب که ذکر کردم توانمندی دارند. گرچه اوراکل از همه توانمندتره اما واقعا نیازی به اون ندارید (نظر شخصیه منه البته) چون مثلا اگر از VB.Net استفاده می کنید بهتره برید سراغ Microsoft SQL که از یک شرکت هستند. البته باید متذکر بشم توانمندی های SQL اینقدر هست که بشه باهاش یک سازمان بسیار بزرگ کشوری را هم اداره کرد و حتی بیشتر. در خصوص اکسس هم باید بگم بهترین نرم افزار برای درک و آموزش ساختار بانکهای اطلاعاتیه. شما اگر با مباحث بانکهای اطلاعاتی مثل ارتباط جداول ایندکسها کویری ها و این جور موارد آشنایی ندارید به نظرم بهترین راه برای یادگیری این مفاهیم اینه که برید سراغ اکسس. در ضمن یاد آوری کنم که همون اکسس که میگیم ضعیفه می تونه نیازهای اکثر برنامه نویسان غیر حرفه ای را به خوبی تامین کنه. البته ایراد اساسی اکسس مباحث امنیتی اون و حجم محدود توانایی های اونه که برای کارهایی با رکوردهای میلیونی مناسب نیست. البته وقتی اکسس نقش پایگاه داده را برای یک نرم افزار نوشته شده توسط مثلا VB.Net را بازی کنه مشکلات امنیتیش به خوبی کاور میشه.
خوب اینها که عرض کردم موتورهای پایگاه داده هستند که برای خودشون مستقل و قایم به ذات هستند. حالا شما برای ارتباط با این پایگاه ها در VB.Net روشها متعددی دارید که مبتنی بر ADO.Net هستند. سنتی ترین روش کد نویسی است که باید برای تمام مراحل برقراری ارتباط مانند باز کردن ارتباط اجرای دستورات و گرفتن اطلاعات و بستن ارتباط کد بنویسید و بعد از این روش روشهای استفاده از DataSet های اماده دات نت هست و بعد از اون روش Linq to SQL و نهایتا جدیدترین اونها روش Entity Framework هستند که بسیاری از کارهای شما را راحت می کنند و کمتر نیاز به کد نویسی دارید. من خودم از dataset های اماده دات نت استفاده می کنم که روش خوب و بدونه دردسر و جا افتاده ای هست و منابع زیادی هم برایش به زبان فارسی و انگلیسی وجود داره.
لازمه که تفاوت بین LINQ و LINQ to SQL را بدونید و اولی روشی برای واکشی داده از هر شی دارای داده است. از آرایه گرفته تا یدتاگریدویو و دیتا تیبل و غیره و دومی روشی هست برای ارتباط بین پایگاه داده و برنامه شما
در مورد کتابها هم پیشنهاد می کنم کتاب ویژال بیسک نوشته مهندس محسن مدحج از انتشارات مهرگان قلم را تهیه کنید که به نظرم بهترین کتاب در این زمینه هست و به تمام سوالات شما پاسخ خواهد داد.
یک نکته ای را هم از تجربه خودم با اکسس براتون بگم. در زمان دانشجویی از مجموعه آفیس اکسس را بلد نبودم و هیچ ازش سر در نمی اوردم. رفتم یک کتاب گرفتم و شروع کردم به خوندن و اولین سوالی که برام ایجاد شد این بود که تا وقتی اکسل خوب و سر راست هست چرا این مهملات را باید بخونم. دلیل این فکر من هم این بود که تا اون موقع هیچ وقت با جداول بزرگ که پر از داده باشند و بخوام اونها را باهم مقایسه کنم و یا داده های زیادی را پالایش کنم مواجه نشده بودم. پس در خصوص پایگاه داده باید عرض کنم لازمه که مفاهیم اولیه اون را درک کنید. اولش هم سخت میگذره اما یک مدتی که باهاش کشتی گرفتین می بینید نه تنها سخت نیست بلکه بسیار شیریه.

امیدوارم منظور سوالات شما را درک کرده باشم و تونسته باشم کمکی بکنم
در پناه حق

mmbguide
پنج شنبه 21 شهریور 1392, 21:24 عصر
ممنون توضیحات خوبی بود. سوال اساسی من اینه که آیا DataSet و Entity و یا هرچیز دیگه که برای ارتباط با بانک اطلاعاتی هستش آیا صرفا فقط کد نویسی رو کم کرده اند و یا اینکه اصلا بدون اینها نمیشه برنامه داده محوری رو کامل نوشت؟

r. salehi
جمعه 22 شهریور 1392, 02:30 صبح
سلام مجدد
شما بدون متدهایی مانند Linq to SQL و یا Entity Framwework و ... که ADO.Net برای برقراری ارتباط بین برنامه و پایگاه داده ایجاد کرده قادر نخواهید بود به موتور پایگاه داده خودتون وصل بشید و به اون داده بدید و بگیرید.
همه اینها یک کار را انجام می دهند اما با تفاوتهایی.
لازمه عرض کنم که روشهایی EF و L2S حجم زیادی از کد نویسی شما را حذف می کنند و خود به خود استانداردهای برنامه نویسی چند لایه را هم تا حدود قابل توجهی برای شما ایجاد می کنند.
ببینید به بیان دیگه وقتی شما می خواهید به یک بانک اطلاعاتی وصل بشید باید کار های زیر را انجام بدید.
ایجاد اتصال با توجه به ادرس پایگاه داده و پسورد دسترسی
بازکردن اتصال
تبادل داده و دستور
بستن اتصال
حالا در روشهای سنتی ADO.Net همه اینها را باید کاملا کد نویسی کنید اما در روشهای جدیدتر شما این کارها را بدون نیاز به خیلی از این کدها انجام میدید. البته در این روشهای جدید هم همون مراحلی که مختصرا عرض کردم انجام میشه اما به صورت خودکار و شسته رفته تر.