PDA

View Full Version : ارتقا ازvb6 به vb.net



pooshiran
پنج شنبه 15 شهریور 1386, 12:12 عصر
من تازه با vb.netشروع کردم و در ارتباط با بانک مشکل دارم
در vb6برای ارتباط از DataEnvironment1 استفاده می کردم که خیلی راحت بود در vb.net مشابهی دارد یا مجبوریم دستی با بانک ارتباط برقرار کنیم

saeed_rezaei
جمعه 16 شهریور 1386, 11:44 صبح
سلام
در دات نت ارتباط با بانک اطلاعاتی اندکی متفاوت تر شد، بهتره بگم توسعه یافته.
شمادر ارتباط با بانک اطلاعاتی مثلا sql نیاز به کلاسهای، sqlconnection, sqldataadapter, datasetm و با توجه به نیازتون ممکنه به کلاسهای دیگری مثل sqlcommand نیاز پیدا کنید.
به هر حال اگه قصد دارید کار با بانک رو در دات نت یاد بگیرید پیشنهاد می کنم، از صفر شروع کنید و هر چی از وی بی 6 یاد گرفتید رو بزارید واسه همون وی بی 6.

pooshiran
شنبه 17 شهریور 1386, 09:27 صبح
ایا میشه از ویزارد استفاده کر یا باید دستی تنظیم بشه

touraj
شنبه 17 شهریور 1386, 09:38 صبح
باز 2005 خیلی بهتر از 2003 هستش. هرچی vb6 راحت بود، این net. سخته

__H2__
شنبه 17 شهریور 1386, 11:02 صبح
سلام
چیزی که شما نیاز دارید توضیحاتی در مورد ADO.Net است.
همین کلمه را در اینجا و گوگول سرچ کنید تا اطلاعاتی پیدا کنید.
ولی در کل حجم مطالب زیاد است و چون به نظر میرسد شما اصلاً تجربه ای در ADO.Net ندارید با یک یا دو پست توضیحی مشکلتان حل نمیشود.
پیشنهاد میکنم حتماً یک کتاب ADO.Net2 تهیه کنید و ان را مطالعه کنید تا مشکلات فعلی و آتی تان بکل حل شوند و بعداً هم مشکل نداشته باشید و بتوانید به روانی کدنویسی کنید.

شاید بتوان الآن یک مثال ساده زد که فعلاً چیزهایی متوجه شوید و مثلاً کارتان راه بیافتد ولی این باعث ادامه مشکلات شما خواهد شد و مدام در کدنویسی و ارتباط با بانک ها مشکل خواهید داشت.

javad2000
شنبه 17 شهریور 1386, 23:58 عصر
من تازه با vb.netشروع کردم و در ارتباط با بانک مشکل دارم
در vb6برای ارتباط از DataEnvironment1 استفاده می کردم که خیلی راحت بود در vb.net مشابهی دارد یا مجبوریم دستی با بانک ارتباط برقرار کنیم
در vb2005 این کار، از vb6 راحت تر شده. چون ویزارد برنامه، خودش براتون ارتباط با بانک داده رو برقرار می کنه. فقط کافیه در نوار سمت راست صفحه روی
Data Sources> Add New Data Source
کلیک کنید. مراحل ویزارد رو طی کنید، بعد هم به راحتی هر Table یا Query رو که خواستید با Dragy&Drop به فرمتون اضافه کنید.
البته این برای شروع بود و برای برنامه های پیشرفته تر باید مراحل پیشرفته تری رو طی کنید.

pooshiran
یک شنبه 18 شهریور 1386, 08:07 صبح
با تشکر از دوستان
من یک کتاب در مورد ado.netویک کتاب در مورد ado.net2 خواندم وچگونگی کار با انها را متوجه شدم فقط در سوال دارم

چه زمانی از commandها استفاده کنیم وچه زمانی از dataset

در صورت استفاده از ویزارد در اینده به مشکلی برخورد نمی کنیم چون خیلی ها استفاده از ویزارد را توصیه نمی کنند (البته در ado.net)ومن با ado.net2 کار میکنم

__H2__
دوشنبه 19 شهریور 1386, 11:16 صبح
سلام
عزیزجان، پیش خودمان باشد، واقعاً کتابها را خواندید و باز مشکل دارید یا فقط ورق زدید!!!! (به کسی نمیگم! :لبخند:)

اشیای معروف ADO.Net
Connection
محل بانک را شناسایی میکند و پل اصلی ارتباط با منبع اطلاعات محصوب میشود که تمام راههای ارتباط نرم افزار و موتور بانک اطلاعاتی از این مسیر صورت میگیرد.
شی فوق حتماً باید در پایان کار Close یا Dispose شود.

Commnad
یک دستور واحد SQL را اجرا میکند یا دستور مستقیم یا یک SP داخلی بانک.

DataReader
چیزی شبیه RecordSet در ADO قدیم است که نتیجه یک جدول را به صورت ReadOnly و فقط روبه جلو ارائه میدهد که فوق العاده سریع است ولی در هر لحظه یک سطر را رکورد را دارید و امکان برگشت عقب هم و تغییر هم ندارید.
شی فوق از نتیجه اجرای یک دستور ExecuteReader برروی Command پدید می آید و حتماً باید در پایان کار Close یا Dispose شود.

DataTable
یک جدول واحد کامل اطلاعات است که در RAM است و میتوانید هر بلایی خواستید سرش دربیاورید!
یک کپی است و به هیچ جا وصل نیست و تغییر در آن بدون ذخیره آن در بانک هیچ تاثیری در بانک اصلی ندارد.

DataSet
مجموعه ای از چندین DataTable و رابطه (Relation) بین آنها است که در اصل میتواند یک بانک اطلاعاتی را به طور کامل در RAM شبیه سازی کند. (جداول و رابطه و قیدها و...)

DataAdapter
یک Commnad محتوی دستور SELECT میگیرد و به کمک DataReader داخلی اش و با اجرای دستور Fill سطر به سطر را از بانک اصلی میخواند و DataTable یا DataSet را از آن پر میکند. (چیزی مثل فرمان Open یا load)
و
در طرف دیگر سه Command برای دستورات DELETE و INSERT و UPDATE میگیرد و با اجرای دستور Update سطر به سطر DataTable یا DataSet را که تغییر کرده باشد با کمک انها در بانک اصلی ذخیره میکند (چیزی مثل فرامین Update و Save)
در اصل این شی رابط اصلی RAM و دیتابیش اصلی است و میتواند داده ها را در جهت انتقال بین این دو در هر دو جهت راهبری کند.


یعنی میتوان یک روند معمول و ساده برای ویرایش محتویات جدول را چنین بیان کرد.
ساخت یک Connection
ساخت یک DataAdapter به همراه 4 Command اش.
پر کردن DataTable یا DataSet به کمک DataAdapter
نمایش DataTable یا DataSet در DataGridView و اجازه تغییر به کاربر.
در آخر هم save کردن DataTable یا DataSet به وسیله DataAdapter در بانک اصلی.

pooshiran
دوشنبه 19 شهریور 1386, 12:30 عصر
سلام
عزیزجان، پیش خودمان باشد، واقعاً کتابها را خواندید و باز مشکل دارید یا فقط ورق زدید!!!! (به کسی نمیگم! :لبخند:)

اشیای معروف ADO.Net
Connection
محل بانک را شناسایی میکند و پل اصلی ارتباط با منبع اطلاعات محصوب میشود که تمام راههای ارتباط نرم افزار و موتور بانک اطلاعاتی از این مسیر صورت میگیرد.
شی فوق حتماً باید در پایان کار Close یا Dispose شود.

Commnad
یک دستور واحد SQL را اجرا میکند یا دستور مستقیم یا یک SP داخلی بانک.

DataReader
چیزی شبیه RecordSet در ADO قدیم است که نتیجه یک جدول را به صورت ReadOnly و فقط روبه جلو ارائه میدهد که فوق العاده سریع است ولی در هر لحظه یک سطر را رکورد را دارید و امکان برگشت عقب هم و تغییر هم ندارید.
شی فوق از نتیجه اجرای یک دستور ExecuteReader برروی Command پدید می آید و حتماً باید در پایان کار Close یا Dispose شود.

DataTable
یک جدول واحد کامل اطلاعات است که در RAM است و میتوانید هر بلایی خواستید سرش دربیاورید!
یک کپی است و به هیچ جا وصل نیست و تغییر در آن بدون ذخیره آن در بانک هیچ تاثیری در بانک اصلی ندارد.

DataSet
مجموعه ای از چندین DataTable و رابطه (Relation) بین آنها است که در اصل میتواند یک بانک اطلاعاتی را به طور کامل در RAM شبیه سازی کند. (جداول و رابطه و قیدها و...)

DataAdapter
یک Commnad محتوی دستور SELECT میگیرد و به کمک DataReader داخلی اش و با اجرای دستور Fill سطر به سطر را از بانک اصلی میخواند و DataTable یا DataSet را از آن پر میکند. (چیزی مثل فرمان Open یا load)
و
در طرف دیگر سه Command برای دستورات DELETE و INSERT و UPDATE میگیرد و با اجرای دستور Update سطر به سطر DataTable یا DataSet را که تغییر کرده باشد با کمک انها در بانک اصلی ذخیره میکند (چیزی مثل فرامین Update و Save)
در اصل این شی رابط اصلی RAM و دیتابیش اصلی است و میتواند داده ها را در جهت انتقال بین این دو در هر دو جهت راهبری کند.


.

عزبز دل برادر
اولا تشکر زحمت کشیدید:تشویق:
در ثانی من کامل اون کتابا را خوندم وتقریبا مسایل با لا را میدونستم

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

و آیا میشه مستقیم از command iها استفاده کرد بدون datasetوdataadaptor

با تشکر

__H2__
سه شنبه 20 شهریور 1386, 13:24 عصر
سلام
میبخشید که اول منظورتان را درست متوجه نشدم.

استفاده مستقیم از Command بعضاً خیلی هم خوب است و باعث افزایش سرعت اجرای برنامه میشود، گرچه شاید به ظاهر کدنویسی را افزایش دهد و نیز کمی کد را گنگ کند و سرعت runtime بالایی دارد، در کل DataTable و DataSet اشیای بزرگ و سنگینی هستند و هر چه کمتر انها را Update و Fill کنید، به نفع برنامه تان است.

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

به راحتی برای اجرای کارهای ساده مثل دستور SELECT COUNT یا اعمال اجرای روی یک تک سطر (UPDATE یا DELETE یا INSERT یا اجرای یک SP داخلی و...) استفاده از Command بسیار مناسب است.

اگر هم دیدید که میتوانید یک پروژه را با اجرای Command و DataReader پیاده سازی کنید و هم با DataSet به نظر من اگر در کدنویسی دقت کنید و کد واضح و تمیزی بنویسید که واضح باشد، کد با DataReader ارجهیت دارد.

مثلاً میخواهید یک لیست را به صورت کاملاً ساده Print کنید که باید تک تک سطرها را بخوانید و مدام Y موقعیت را افزایش دهید و بعد سطر بعد... طبیعتاً انجام عمل فوق با DataReader امکان پذیر است و شما نیازی به برگشت به عقب و یا تغییر داده ها ندارید.

سرعت بالای DataReader را فراموش نکنید که باعث میشود اغلب اوقات به زحمت کدنویسی اش بیارزد ولی اعتدال را فراموش نکنید، کاری که با DataSet راحت تر و روانتر است را با ان انجام دهید و کاری که میتوان با DataReader انجام داد و باعث پیچیدگی خیلی زیاد کد نمی شود را با DataReader انجام دهید، حق انتخاب با شماست و شما تصمیم گیرنده اصلی پروژه خود هستید.


در مورد ویزاد ها هم خوب هستند و کار را سریع میکنند مخصوصاً در ساخت TypedDataSet ها و DataAdapter ها ولی اگر بلد باشید و توانایی دستکاری را داشته باشید اغلب خیلی خوب و بهتر میشود که خروجی آنها را بهینه کنید، مثلاً من هیچ وقت از دستورات DELETE و INSERT و UPDATE ای که توسط ویزارد برای DataAdapter ها ساخته میشود، راضی نیستم و همیشه یا از SP ها استفاده میکنم یا اگر هم از ویزارد استفاده کنم انها را دستی ویرایش میکنم.
در کل از ویزارد استفاده کنید ولی راه دستی اش را هم بلد باشید و چه بهتر که ویزارد را با ویرایش دستی خودتان تلفیق کنید.