PDA

View Full Version : سوال: کسی از دوسنان هست که کارهی مربوط به بانک اطلاعتی رو با کد نویسی بلد باشه ؟؟؟



oliya24
جمعه 21 مرداد 1390, 23:38 عصر
سلام دوستان کسی میتونه کارهای مختلف مربوط به بانک اطلاعاتی رو از کانکشن تا دستورات اس کیوال رو در اینجا یادمون بده ممنون میشم

oliya24
جمعه 21 مرداد 1390, 23:39 عصر
من هم کمک میکنم
دوستان من رو تنها نگذارید خواهش میکنم

pouyansaraf
شنبه 22 مرداد 1390, 10:35 صبح
ما هم هستیم
همین امروز شروع میکنیم
ازتون میخوام یه نام مناسب برای این تاپیک انتخاب کنید
و یا اگر نتونستید از مدیران محترم خواهشمند ام همچین کاری را انجام دهند

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

monirprogram
شنبه 22 مرداد 1390, 11:10 صبح
(گرچه تازه دارم از امکانات این فروم استفاده میکنم، اما بااجازه پیشکسوتها)مورد اول:
کار با دستورات insert,delete ,update(لطفا دوستان کامل کنن)
برای کار با بانک اطلاعاتی در صورتی که بخواهیم کدهای sql را داخل محیط بنویسیم باید مراحل زیر طی بشه:
1- ایجاد شی اتصال .
* توضیح:


dim str as string
str="Data Source=.;Initial Catalog=tablename;Integrated Security=True"
dim con as new sqlconnction(str)
2-ایجاد متغیر رشته ای برای تعیین دستور که میشه هر کدوم از دستورات بالا(insert,update,delete) باشه.من از insert مثال میزنم.
*توضیح:

dim strcom as string
strcom="INSERT INTO tblname (filed) VALUES (value)"

3- ایجاد شی از دستور
*توضیح
dim com as new sqlcommand(strcm,con)

4-باز کردن بانک، اجرای دستور، بستن بانک

con.open()
com.ExecuteNonQuery()
con.close

oliya24
شنبه 22 مرداد 1390, 23:16 عصر
خوب منم میام تا مطلب بگذارم شما هم بیایید و شرکت کنید
برای استفاده از بانک اطلاعاتی باید اول با اون بانک ارتباط برقرار کرد که به وسیله شی connection میتونید این کار رو انجام بدید پس در زیر ما تعریفی از این شی رو داریم
شی connection :اولین مرحله در استفاده از بانک اطلاعاتی در ویبی برقراری ارتباط فیزیکی با بانک مورد نظر است که این کار وظیفه شی connection است این شی هم مانند اشیا دیگر ویبی دارای خصوصیاتی میباشد که یکی از مهمترین ان
connection string است
نکته کد نویسی بانکهای اطلاعاتی باید دقت کرد که از چه فضای نامی استفاده میکنید
انجام مرحله اتصال به بانک اس کیو ال سرور
ابتدا فضای نامی import system.data.sqlclient
را فراخوانی کنید در بالاترین کدها این فضای نامی را بنویسید
وظیفه این فضای نامی چیست؟ این فضای نامی شامل کلیه اشیای مربوط به بانک اطلاعاتی sql server میباشد
2:یک نونه شی از کلاس sql connection ایجاد میکنیم به شکل زیر
dim cnn as new sql connection("data source=.;initial catalog=test;integrated security=true")

if cnn.state=conectionstate.closed then
cnn.open()

دیگر خصوصات این شی خصوصیت state وضعیت فعلی شی connection رامشخص میکند و دارای مقادیر ثابت زیر میباشد
1:broken :اتصال باز استاما برای استفاده صحیح باید انرا بسته و سپس باز نمود
closed اتصال بسته است
connection :اتصال در فرایند عمل است
executing :اتصال فرمانی را اجرا میکند
fetching:اتصال داده ها را بازیابی میکند
open : اتصال باز است

در این قسمت test نام بانک اطلاعاتی میباشد و قسمت integrated security=true نشانه این است که ویندوز احراز هویت کرده است
تا اینجا که فکر کنم همه چیز واضح بوده باشه؟؟
اگر سوالی هست بگید حتما تا این تاپیک بدون اشتباه باشه
data source:چیست؟؟؟؟؟؟ محل و فایل حاوی بانک اطلاعاتی
متدها:open,close
در صورتی میتوانید فرمان open را صادر کنید که وضعیت connection در حالت closed باشد

oliya24
شنبه 22 مرداد 1390, 23:19 عصر
دوستانی که من رو در این تاپیک همراهی میکنند من در موقعی که میخوام کدهای شما رو ببینم با تگهای اچ تی ام ال مواجه میشم لطفا به دو مورد توجه کنید کدهای ارسالی به این تاپیک رو از زبان برنامه نویسی کپی نکنید و دیگری اینکه کدها رو بین دو تگ vb بگذارید این امکان رو سایت داره کافی که فقط روی کلمه vb در بالای تاپیک کلیک کنید و کدهاتون رو در ما بین این تگها بنویسید و اینکه سپاسگذارم

oliya24
یک شنبه 23 مرداد 1390, 00:12 صبح
شی دیگر که مربوطبه فمانهای sql میباشد شی data command میباشد در زیر تعریفی هم از این شی داریم
رون انجام کار این شی به این شکل است که بایستی با یک شی connection ارتباط برقرار کرده وسپس دستورات اس کیو ال رو اجرا کرد دستورات اس کیوال میتوانند update,del,insert ,..باشند
این شی هم از خصوصیاتی بهره میگیرد که به شرح زیر هستند@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
1:commandtype
2:commandtext
گفتم که این شی دستورات اس کیوال را اجرا میکند خوب دستوررررر
نوع دستوری که شی command قرار است روی بانک اجرا کند با مقداری که در خصوصیت commandtype قرار میگیرد مشخص میشود و خصوصیت commandtext حاوی دستوراتی است که قبلا نوع ان در commandtype مشخص شده است مقادیر commandtype شامل موارد زیر میباشد
مثلا یکی از مقادیر commandtype :
commandtype.text
در صورتیکه قصد دارید دستورات اس کیوال رو روی بانک اجرا کنید باید این نوع را انتخاب و سپس دستورات مورد نظرتان را بنویسید
برای ایجاد این شی در کد نویسی بعد دستورات مربوط به اتصال این کدها رو وارد کنید
به شکل میتوان این شی رو ساخت که این روش که خدمت دوستانم عرض میکنم بهترین روش است چون امکان ارتباط با شی connection , کدهای sql مورد نظر فراهم است
dim dcom as new sqlcommand
dcom.connection=cnn
dcom.commandtype=commandtype.text
dcom.commandtext="select * from tblfdate"

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

oliya24
یک شنبه 23 مرداد 1390, 00:53 صبح
نوعی روش در کد نویسی هست موسوم به برنامه نویسی پارامتری که بیشتر برنامه نویسان حرفه ای مندیدم از این روش در برنامه هاشون استفاده میکنند
که روش این کار رو در زیر متذکر میشم :استفاده از پارامترها در کد نویسی:
dcom.parameters.add("name parameters" ,type parameter)

برای استفاده از پارامترها باید علامت @ را قبل از نام پارامتر متذکر شوید جزع واجباته فراموش نشود
به مثال زیر توجه کنید
dcom.parameters.add("name",sqldatatype.nvarchar)
dcom.parameters.add("name").value="benyamin"
در کد بالا ابتدا پارامتر نام را در دستورات استفاده کردموبعد به ان مقدار دلخواه اسم بنیامین رو دادم این رو بش میگن ردوبدل پارامتر
متد execute non query
یکی از فرامین درون command text را بر روی بانک اطلاعاتی اعمال میکند
جهت اجرای این متد باید شی connection مرتبط با ان باز باشد
اینم از برنامه نویسی پارامتری بعدها روشهای برتری رو اموزش میدم
دوستان همکاری کنید

oliya24
یک شنبه 23 مرداد 1390, 00:57 صبح
یه جمع بندی میکنم کاری که تا به حال انجام دادم و بعد به سراغ تاپیک بعدی میرم
1:ایجاد شی کانکشنومقدار دهی به ان
2:ایجاد شی دیتا کامندوارتباط با شی کانکشن ونوشتن دستورات درون ان
در بخش اخر هم باید این کد را بنویسید dcom.execute non query
این دستور دستورات اس کیو ال رو به اجرا در میاورد

oliya24
یک شنبه 23 مرداد 1390, 01:06 صبح
یاد گرفتیم برای دستوراتی مثل update,insert,del از چه متدی استفاده کنیم حال میخواهم متد دیگری را معرفی کنم و قبل از ان باید بگم دقیقا چه کاربردی داره در برخی از برنامه ها گاهی مجبوریم که مثلا بزرکترین یا کوچکترین تاریخ را بدست اوریم و یا بعضا پیش میاد که بخواهیم میانگین نمرات یک دانشجو رو حساب کنیم خوب بااستفاده از توابع تراکمی اس کیوال این کارها شدنی است و برم سراغ متدی که گفتم
متد :executescalar()
در مواقعی که در بالا متذکر شدم که ما فقط و فقط یک خروجی داریم باید از این متد استفاده کنیم توابعی چون sum,avg,max,min,count,avg,........................ .........

oliya24
یک شنبه 23 مرداد 1390, 01:19 صبح
میرم سراغ یک شی دیگر در رابطه با بانک اطلاعاتی:
شی sqldatereader:کارش چیه؟؟؟؟؟؟؟؟؟به کمک این شی میتوان تک تک رکوردهای یک جدول رو بدست اورد و البته این شی را شما فقط از طریق کد نویسی میتوانید بسازید و فضای نامی هم همون system.data.sqlclient hsj
و نیاز به هیچ فضای نام دیگری نیست
اگر یه روزی خواستید از این شی استفاده کنید طریقه استفادش به این صورته
dim dr as sqldatareader
dr=dcom.executereader
این شی با متد executereader کار میکند

oliya24
یک شنبه 23 مرداد 1390, 01:29 صبح
دوستان کمک نمیکنید یه لطفی بکنید و من رو در این تاپیک تنها نگذارید
زکات علم نشر ان است
دوستان خواهشمندم من رو تنها نگذارید
شما هم مطلب بگذارید

oliya24
یک شنبه 23 مرداد 1390, 01:40 صبح
شی دیگر که باید براتون درموردش بحث کنم شی dataADAPTER است کارش چیه؟؟؟؟؟؟؟؟؟این شی به مانند یک پل اتصال دهنده بین شی کانکشن و دیتا ست است اگر بخوا م بحث رو در مورد این شی کوتاه کنم میتونم بگم که این بعد از برقراری شی کانکشن با بانک فراهم شد شی DATAadapter اطلاعات جداولوداده های درون ان و و همچنین ارتباط میان جدولها رابه شی دیتا ست منتقل میکند
دستررسی به داده ها و تغیرات انه توسط اشیا دیتا کامند انجام میشود و برای این منظور از چهار شی دیتا کامند در شی دیتا اداپتر استفاده میکنیم

oliya24
یک شنبه 23 مرداد 1390, 13:02 عصر
دوستان اگر من اینجا مطلبی میگذارم برای یادگیری خودم و شما هست نه بیشتر توقعی هم از کسی ندارم به جز اینکه شما هم من رو یاری کنید اگر من 1 مطلب بگذارم و شما هم یه مطلب دیگه کلی دانش میتونیم با کمک هم کسب کیم
پس شما هم مطلب بگذارید
متشکرم

oliya24
یک شنبه 23 مرداد 1390, 15:27 عصر
دستان در مورد برنامه نویسی پارامتری واستون بگم این نوع بر نامه نویسی به به نرم افزار سرعت فوقالعده ای میده مثلا من امروز پیش یکی از دوستانم بودم که از این شیوه برنامه نویسی در یکی از برنامه هاش استفاده کرده بود شاید حدود 7700 رکرود که البته بیشتر هم بود رو در یه چشم به هم زدن نمایش داد پس یکی از مزایای بر نامه نویسی پارامتری سرعت انجام روند کاری نرم افزار است

oliya24
یک شنبه 23 مرداد 1390, 16:27 عصر
ادامه مطلب در مورد شی dataADAPTER
در واقع یک دیتا اداپتور چیزی نیست جز مجموعهای از چند شی command که روی پایگاه داده مقصد اجرا میشوند این شی دارای 4 خاصیت برای انجام 4عمل اصلی روی پایگاه داده دارد
insertcommand:یک شی COMMAND برای درج رکورد جدید
UPDATECOMMAND:یک شی COMMAND برای به روز در اوردن رکوردهای موجود
DELETECOMMAND: یک شی COMMAND برای حذف رکوردهای موجود
SELECTCOMMAND:یک شی COMMAND برای بازیابی رکوردهای دیتابیس
هر کدام از این خاصیتها دارای شی کانکشن میباشد و کلکسیون PARAMETERS وابسته به خود هستند که میتوان از انها برای تعیین اتصال به پایگاه داده وپارامترهای پرس و جو استفاده کرد
خوب بریم سراغ کد نویسی @@@@@@@@
برای ایجاد یک نمونه از این شی از کد زیر استفاده کنیدDIM DA AS NEW SQLDATAadapter
جهت مقدار دهی به خصوصیات SELCOMMAND,... به این شکل استفاده کنید
مقدار دهی به این شی الگوی تمام مقداردهی ها به یک شکل است پس من در اینجا فقط یک الگو رو میگذارم
SQLDATAdapter.selectcommand=newsqlcommand("select * from tblfdate",cnn)
و برای ایجاد پارامتر ها در این شی از کد زیر الگو برداری کنید
sqldataadapter.selectcommand.parameters.add("name",sqldatatype.nvarchar)

و برای مقدار دهی به پارامتر از این کد الگو بر دارید
sqldataadapter.selectcommand.parameters("name").value=benyamin

oliya24
یک شنبه 23 مرداد 1390, 16:32 عصر
شی دیگری که بسیار مهم است و از ان برای نمایش دادهای موجود در جداول بکارمیرود نام این شی هست dataGRID
برای کار با این شی خصوصیت دیتا سورس رو با دیتاست برابر کنید و جهت نمایش داده ها از متد FILL استفاده کنید

Behzad_MCP
یک شنبه 23 مرداد 1390, 16:54 عصر
سلام
در خصوص Command های DataAdapter میخواستم بگم که یک شی به نام SqlCommandBuilder هست که یک dataAdapter به عنوان پارامتر میگیره و کامندهای اون دیتا ادپتر را به صورت اتومات میسازه :)

oliya24
یک شنبه 23 مرداد 1390, 17:16 عصر
هی ما بتون میگیم مطلب بگذارید هی بی توجهی کنید دوستان خود من تا به حال کلی چیز یاد گرفتم که تو این 2 سال گذشته نتونسته بودم یاد بگیرم ای کاش زودتر این تاپیک رو میزدم شما هم مطلب بگذارید ضرر نداره

oliya24
یک شنبه 23 مرداد 1390, 18:01 عصر
کلاس BINDINGSOURCE:خیلی جالبه پس دقت کنید@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@
این کلاس تمامی خواص ومتدهای مورد نیاز برای کار با دیتاست رو داره مانند MOVENEXT,MOVEFIRST,...متدهایی برای مرتب کردن رکوردهای منترل دیتاگرید بر اساس فیلد دلخواه مانند SORT خاصیتهایی برای فیلتر کردن رکوردها یا پیدا کردن رکورد خاص برای دکمه های >>اولین رکورد و > رکورد قبل و عکس این 2 و برم سراغ کد نویسی تا دیر نشده
برای رفتن به رکورد بعد از این کد استفاده کنید @@@@@@@
PRODUCTSBINDINGSOURCE.MOVENEXT()
این کد رو بر روی یک دکمه بنویسید فراموش نشود که در رویداد کلیک هم بنویسید

فعلا حالشو ببرید تا برم سراغ کد بعدی
خاصیت FILLTERکلاس BINDINGSOURCE در واقع بخش WHERE یک پرس و جوی اس کیوال است در کد زیر یک دکمه فیلتر را میبینید که محصولات را بر اساس نام انها فیلتر میکند پس این بار هم یه دکمه بسازید و مدر ریداد کلیک ان این کد را بنویسید
DIM FILLTER AS STRING
FILLTER=INPUTBOX("ENTER PRODUCT NAME")
PRODUCTSBINDINGSOURCE.FILLTER=PRODUCTNAME LIKE'%"&FILTER.TRIM&"%"

اینم از این
حال دکمه FIND نیز از متدهای POSITION کلاس BINDING DOURCE برای پیدا کردن اندیس رکورد مورد نظر و رفتن به ان رکورد استفاده میشود
کد این قسمت هم در یه دکمه بنویسید و همان رویداد
DIM SEARCH AS STRING
SEARCH=INPUTBOX("ENTER PRODUCT NAME")
DIM INDEX AS INTEGER=PRODUCTSBINDINGSOURCE.FIND("PRODUCTNAME",SEARCH)
PRODUCTSBINDINGSOURCE.POSITION=INDEX
اینم از این کد
حالا این متد رو هم بگم که یه بحث دیگر رو شروع کنم
برای تعیین تعداد رکوردهای دیتاست از متد COUNT کمک میگیریم و برای گرفتن رکورد فعلی از متد CURRENT استفاده میکنیم به این نحو
CTYPE(PRODUCTSBINDINGSOURCE.CURRENT, DATAROWVEIW).ROW

oliya24
یک شنبه 23 مرداد 1390, 18:06 عصر
اگر مطلبی دارید بگذارید لطفا خوشحال میشیم دوست عزیز

oliya24
یک شنبه 23 مرداد 1390, 18:40 عصر
ادامه کار با شی BINDINGSOURCE حال برای تغییر راده ها در دیتاست کد مینویسیم
ایجاد یک ردیف جدید
NAME BINDINGSOURCE.ADDNEW()


جهت حذف یک ردیف از کد زیر استفاده میکنیم
NAMEBINDINGSOURCE.REMOVAT(1)
عدد 1 شماره ردیفی است که باید پاک شود
فراموش نکنید

oliya24
یک شنبه 23 مرداد 1390, 19:25 عصر
اشیا DATA AWARE :این نوع اشیا با بانک اطلاعاتی موجود در دیتاست ارتباط برقرار کرده و منجر به نمایش و ویرایش داده ها میشود میتوان گفت تمامی اشیا ویژوال بیسیک از این موضوع پیروی میکنند مثل شی TEXTBOX
حال به برسی کد ارتباط تکست باکس با BINDINGSOURCE میپردازیم از طریق کدنویسی
TEXTBOX1.DATABINDINGS.ADD("TEXT",BINDINGSOURCE1,"NAME")
تحلیل کد:خصوصیت TEXTکنترل تکس باکس با فیلد NAME از BINDINGSOURCE ارتباط برقرار کرد

oliya24
یک شنبه 23 مرداد 1390, 19:28 عصر
مثل اینکه قراره این تاپیک رو فقط من رهبری کنم ؟!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
روم سیاه دیگه مطالبم داره تمام میشه بابا حرفه ای ها پس بیاید و به داد من برسید

oliya24
یک شنبه 23 مرداد 1390, 19:51 عصر
روش پروسیجر نویسی هم میگم چون خیلی بدرد میخوره همون پاسکاری پارامترهاست و..

bia2joker
یک شنبه 23 مرداد 1390, 23:33 عصر
به نظر من وصل شدن به بانک اطلاعاتی با استفاده DateSet و استخراج داده ها با استفاده از LINQ بهترین و راحت ترین و کم کد ترین باشه !!!
فقط کافیه از منوی project گزینه Add New item را انتخاب کنیم سپس DataSet را اضافه کنیم
سپس از splution Explorer (سمت راست بالا) Dataset 1 رو باز کنیم و از Server Explorer جدول ها یی که می خواهیم را داخل Dataset 1 دراگ کنیم(مثلا جدول Personal)
حالا می خواهیم اطلاعات جدول personal را در DataGridView1 نمایش دهیم
در یک رویداد می نویسیم
Dim PersonalTa As New DataSet1TableAdapters.PersonalTableAdapter
Dim PersonalT As New DataSet1.PersonalDataTable

personalTa.Fill(PersonalT)
Dim U = From I In SickT Select New With {.name = I.Name, .Address = I.Address, .phone1 = I.phone1}

DataGridView1.DataSource = U.ToList

bzdesign
دوشنبه 24 مرداد 1390, 00:21 صبح
بسیار عالی بود bia2joker (http://barnamenevis.org/member.php?159949-bia2joker) جان
میشه لطف کنی بگی کدوم قسمت این کد هایی که گفتی مربوط به LINQ هست ؟
ممنون میشم

bia2joker
دوشنبه 24 مرداد 1390, 02:02 صبح
بسیار عالی بود bia2joker (http://barnamenevis.org/member.php?159949-bia2joker) جان
میشه لطف کنی بگی کدوم قسمت این کد هایی که گفتی مربوط به LINQ هست ؟
ممنون میشم

Dim U = From I In SickT Select New With {.name = I.Name, .Address = I.Address, .phone1 = I.phone1}

bia2joker
دوشنبه 24 مرداد 1390, 02:32 صبح
برای اینکه داده را در بانک اطلاعاتی (مثلا جدول personal ) ثبت کنید فقط کافیه بنویسیم ...

PersonalTa.insert(Id,Str_name,Str_Address,Str_Phon e1)

توجه کنید که حتما از PersonalTa استفاده کنید نه از PersonalT
پس از ثبت برای مشاهده اطلاعات ثبت شده دوباره از دستور LINQ پست قبل استفاده کنید و Datagridview1 را به جدول وصل کنید
برای Update هم بهتره که از Store procedures استفاده کنید که در ادامه آن را توضیح می دم

oliya24
دوشنبه 24 مرداد 1390, 11:48 صبح
دوستان کسی مطلبی در مورد کنترل bindingnavigator نداره بگذاره ممنون میشم

minaforotan
دوشنبه 24 مرداد 1390, 14:33 عصر
وقتی کد که منحصر به فرده و از نوع identity هم نمیخوایم تعریفش کنیم باید این امکان باشه که قبل از ثبت چک بشه و اگه کد تکراری بود خطا بده و از ثبت جلوگیری بشه

این کدش در دکمه ی ثبت بنویسید

ad.SelectCommand.CommandText = "select id from tbl 1 where id=" + txtid.Text + ""
Dim dr As SqlClient.SqlDataReader
ad.SelectCommand.Connection.Open()
dr = ad.SelectCommand.ExecuteReader
If dr.Read() Then

MsgBox("کد تکراری است", MsgBoxStyle.OkOnly + MsgBoxStyle.Critical + 0, "خطا در ذخیره اطلاعات")
ad.SelectCommand.Connection.Close()

Else
عملیات مربوط به ثبت

ahmadreza517
سه شنبه 25 مرداد 1390, 10:37 صبح
سلام دوست عزیز
در ادرس زیر نمایش اطلاعات از طریق کدنویسی توضیح داده
http://howprg.blogfa.com/cat-5.aspx