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

صفحه: [1]   پایین
  چاپ صفحه  
نويسنده موضوع: نحوه attach کردن بانک sql در سی شارپ 2008  (دفعات بازدید: 9057 بار)
ninja
کاربر جدید
*

تشكرها : 5
آفلاین آفلاین

جنسيت : پسر
تعداد ارسال: 20


ديدن مشخصات
« : 25 دي 1388,ساعت 22:26:27 »

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

به هرجا که سر زدم دری بسته شد
به هر جا که در زدم سری شکسته شد
تقدسی
Super Manager
*

تشكرها : 100
آفلاین آفلاین

جنسيت : دختر
تعداد ارسال: 380

هیهات من الذله ...


ديدن مشخصات WWW
« پاسخ #1 : 25 دي 1388,ساعت 23:10:44 »

اولین کلاس در سی شارپ که آن را بررسی خواهیم کرد کلاس SqlConnection  است که اتصال برنامه را به بانک اطلاعاتی بر قرار میکند.

نحوه استفاده از این کلاس در نمونه کد زیر مشخص شده است.

قبل از استفاده از کلاسهای SQL در سی شارپ بایستی دو فضای نام را در ابتدای فرم معرفی کنیم :

 

کد:
using System.Data;

using System.Data.SqlClient
;

 

استفاده از SqlConnection :

 

کد:
SqlConnection obj = new SqlConnection(string sqlconnection) ;

 

تنها پارامتر آن یک رشته که مسیر بانک اطلاعاتی است برای مثال با دستور زیر به بانک اطلاعاتی test در سرور local دسترسی پیدا می کنیم :
کد:


SqlConnection obj = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True");

علامت نقطه به معنای localhost هست . اسم پایگاه داده ها در قسمت InitialCatalog مشخص میکند و در قسمت انتهایی نیز نحوه دسترسی به پایگاه داده را مشخص می کند . به عنوان مثال ممکن است که ما در پایگاه داده کاربران مختلف با رمز عبور مختلف و با دسترسی مختلف داشته باشیم که در قسمت انتهایی آن را مشخص می کنیم.استفاده از Integrated Security به معنی این است که از نام کاربری که به ویندوز وارد شده است استفاده کند.

اما بعضی از اعمال مهم که در این قسمت استفاده می شود عبارتند از :

1-باز کردن پایگاه داده

obj.Open();

ما بقی شرح داده خواهد شد.
خارج شده است

كاربران گرامی : لطفاً قبل از هرگونه فعاليت ابتدا قوانين انجمن را مطالعه  و قبل از ارسال جديد در انجمن جستجو نماييد.
تقدسی
Super Manager
*

تشكرها : 100
آفلاین آفلاین

جنسيت : دختر
تعداد ارسال: 380

هیهات من الذله ...


ديدن مشخصات WWW
« پاسخ #2 : 25 دي 1388,ساعت 23:27:13 »

2-بستن ارتباط با بانک اطلاعاتی

کد:
obj.Close();

معرفی SqlDataAdapter
خوب بعد از اینکه ارتباط را با بانک اطلاعاتی بر قرار کردیم نوبت به اجرای دستورات مورد نظر می رسد . از چند کلاس برای این کار می توان استفاده کرد که ما در این بخش SqlDataAdapter را معرفی میکنیم . قبل ازمعرفی  نگاهی به انواع فرمانهایی که می توانیم اجرا کنیم را معرفی می کنیم .

1-StoredProcedure

2-Text

3-Table

اسامی بالا کاملاً مشخص هستند و نیاز به توضیح بیشتر ندارند البته در مثال هایی که در ادامه خواهد آمد آنها را بیشتر معرفی می کنیم .

طبق معمول برای استفاده از یک کلاس باید یک نمونه سازی از کلاس مربوطه انجام گیرد :

کد:
SqlDataAdapter cmd1 = new SqlDataAdapter (string selectCommandText,SqlConnection selectConnection);

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

به عنوان اولین مثال می خواهیم تمام اطلاعات دانشجویان را در یک datagrid نمایش دهیم :

اولین راه حل :
کد:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True");

SqlDataAdapter cmd = new SqlDataAdapter("Select * From Student", con);

DataSet ds = new DataSet();

cmd.SelectCommand.CommandType = CommandType.Text;

cmd.Fill(ds, "Student");

dataGridView1.DataSource = ds.Tables["Student"];

dataGridView1.AutoGenerateColumns = true;
           
توضیح کد : همان طور که مشاهده می کنید در اولین خط مسیر بانک اطلاعاتی را مشخص کرده ایم اما در خط دوم یک متغیر جدید از نوع  SqlDataAdapter استفاده که به عنوان اولین پارامتر به آن دستوری برای بازیابی تمام رکوردهای جدول دانشجویان و در پارامتر دوم مسیر بانک اطلاعاتی که قبل از آن مشخص کرده ایم قرار  گرفته است .

در خط بهدی یک شیء از نوع DataSet استفاده کرده ایم . این کلاس برای ما می تواند پایگاه داده ها را به صورت مجازی در خود نگهداری کند . و دلیل استفاده از آن نیز این است که ما برای یک بار اطلاعات را از بانک اطلاعاتی می خوانیم و سپس ارتباط خود را با بانک اطلاعاتی قطع می کنیم و با اطلاعات موجود در DataSet کار می کنیم . به همین دلیل سرعت کار ما به مراتب بیشتر خواهد شد .

خوب به سراغ خط بعدی می رویم در این خط ما نوع دستوری را که میخواهیم اجرا کنیم را مشخص که در این مثال دستور ما از نوع متن Text است . البته به طور پیش فرض نیز این مقدار مورد استفاده قرار می گیرد . در خط بعدی از متد Fill در کلاس SqlDataAdapter استفاده کرده ایم که این دستور کاری که انجام می دهد بدین شکل است که بانک را باز و دستورمورد نظر را اجرا و نتایج آن را در DataSet ذخیره و سپس ارتباط را با بانک قطع می کند. بنابراین کار ما را راحت تر میکند.

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

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True");

SqlDataAdapter cmd = new SqlDataAdapter("Select * From Student Where sid >=@sid", con);

DataSet ds = new DataSet();

cmd.SelectCommand.CommandType = CommandType.Text;

cmd.SelectCommand.Parameters.AddWithValue("@sid", int.Parse(textBox1.Text));

cmd.Fill(ds, "Student");

 
dataGridView1.DataSource = ds.Tables["Student"];

dataGridView1.AutoGenerateColumns = true;

 
           
کد شباهت زیادی با کد بالا دارد اما تفوت هایی دارد در خط 2 در دستور پرس و جویی که وارد کرده ایم به این معنی اشاره کرده ایم که دانشجویانی که شماره دانشجویی آنها بزرگتر مساوی @sid باشد به ما نشان دهد . اما این مقدار از کجا مشخص می شود . ما در خط 5 مقدار مورد نظر خود را که در یک textbox ذخیره شده به پارامتر دستور ارسال کرده ایم.
« آخرين ويرايش: 26 دي 1388,ساعت 10:34:21 توسط كياني » خارج شده است

كاربران گرامی : لطفاً قبل از هرگونه فعاليت ابتدا قوانين انجمن را مطالعه  و قبل از ارسال جديد در انجمن جستجو نماييد.
انجمن تخصصی استادان و دانشجویان کامپیوتر ایران
« پاسخ #2 : 25 دي 1388,ساعت 23:27:13 »

شما هم صاحب یک سامانه پیام کوتاه با شماره اختصاصی شوید!
 خارج شده است
تقدسی
Super Manager
*

تشكرها : 100
آفلاین آفلاین

جنسيت : دختر
تعداد ارسال: 380

هیهات من الذله ...


ديدن مشخصات WWW
« پاسخ #3 : 25 دي 1388,ساعت 23:28:48 »

اما اجازه دهید تا نحوه اجرای یک StoredProcedure را نیز مورد بررسی قرار دهیم . مثال بالا را مجددا با استفاده از روالها انجام می دهیم :

روال زیر را در بانک تعریف می کنیم :
کد:
CREATE PROCEDURE sp1
      @sid int
AS
      Select * From Student Where sid >= @sid
      RETURN
اما در کد فقط دو خط زیر تغییر می کند :
کد:
SqlDataAdapter cmd = new SqlDataAdapter("sp1", con);

cmd.SelectCommand.CommandType = CommandType.StoredProcedure;

که پارمتر اول نام روال ذخیره شده قرار می گیرد. و نوع دستورنیز از Text به StoredProcedure تغییر می کند.

اما بعضی روال ها وجود دارد که مقدار خروجی نیز دارد . اجازه بدهید مثال زیر را بررسی کنیم . میخواهیم با دادن شماره دانشجویی به یک روال نام دانشجو را بازیابی کنیم :

ابتدا sp1 را به کد زیر تغییر می دهیم:

کد:
ALTER PROCEDURE sp1
      @sid int,
      @sname nvarchar(50) output
AS
      Select @sname=sname From Student Where sid = @sid
    Select @sname
      RETURN

حال کد برنامه را به شکل زیر تغییر میدهیم
کد:

SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Integrated Security=True");

 SqlDataAdapter cmd = new SqlDataAdapter("sp1", con);

       cmd.SelectCommand.CommandType = CommandType.StoredProcedure;

cmd.SelectCommand.Parameters.AddWithValue("@sid", int.Parse(textBox1.Text));

cmd.SelectCommand.Parameters.AddWithValue("@sname", "Not Found");

con.Open();

object res =  cmd.SelectCommand.ExecuteScalar();

con.Close();

MessageBox.Show(res.ToString());

خوب علاوه بر ارسال شماره دانشجویی ما یک پارامتر دیگر به نام @sname را نیز باید ارسال کنیم . برای اولین بار مقدار آن را برابر Not Found قرار می دهیم ولی اگر در جدول مطابقت به وجود آمد مقدار آن عوض می شود . اما به نحوه اجرای دستور توجه کنید ما بر خلاف روش قبل ابتدا با بانک اطلاعاتی ارتباط بر قرار و سپس دستور را اجرا میکنیم . به طور کلی به چتد طریق می توان دستورات را اجرا کرد . وقتی ما یک مقدار خروجی داریم مثل مثال فوق از  ExecuteScalar استفاده می کنیم . موقعی که می خواهیم نتایج یک پرس و جو را بر گردانیم مثل یک دستور Select از ExecuteReader و موقعیکه دستور فقط یک درج و یا ویرایش و یا حذف یکسری رکورد باشد از ExecuteNonQuery استفاده می کنیم .
« آخرين ويرايش: 26 دي 1388,ساعت 10:28:28 توسط كياني » خارج شده است

كاربران گرامی : لطفاً قبل از هرگونه فعاليت ابتدا قوانين انجمن را مطالعه  و قبل از ارسال جديد در انجمن جستجو نماييد.
ninja
کاربر جدید
*

تشكرها : 5
آفلاین آفلاین

جنسيت : پسر
تعداد ارسال: 20


ديدن مشخصات
« پاسخ #4 : 25 دي 1388,ساعت 23:52:25 »

سلام
لطفا اگر امکانش هست به صورت ویزاردی هم بفرمایید که چگونه است
آیا از طریق server explorer  هم میشود بانک را اتش کرد
خارج شده است

به هرجا که سر زدم دری بسته شد
به هر جا که در زدم سری شکسته شد
كیانی
مديريت سايت
*****

تشكرها : 172
آنلاین آنلاین

جنسيت : پسر
تعداد ارسال: 1316


اليس الله بكاف عبده ؟!


ديدن مشخصات WWW
« پاسخ #5 : 26 دي 1388,ساعت 10:22:04 »

سلام

آموزش VB.NET و كار با بانكهاي اطلاعاتي
نحوه ساخت ارتباطات بين جداول بانك هاي اطلاعاتي و .NET (قابل تعميم در تمامي محيط هاي برنامه سازي تحت ويژوال استوديو دات نت)

کد:
http://www.aiapir.com/index.php?option=com_content&task=view&id=38&Itemid=106

موفق باشيد.
التماس دعا
يا علي
خارج شده است

" فقال رب انی لما انزلت الی من خیر فقیر (قصص 24) * اللهم عجل لوليك الفرج"

منتظر شما در این هم اندیشی هستیم ...
هم اندیشی برای بهبود عملکرد سایت آیاپیر
ninja
کاربر جدید
*

تشكرها : 5
آفلاین آفلاین

جنسيت : پسر
تعداد ارسال: 20


ديدن مشخصات
« پاسخ #6 : 26 دي 1388,ساعت 11:24:46 »

سلام
لطفا اگر ممکنه بدون کد نویسی را هم توضیح بدید.منظورم از طریق منوی view گزینهserver explorer وتب data connection می باشد طبق شکل زیر
کد:
up.iranblog.com/7/1263715523.jpg
up.iranblog.com/7/1263655477.jpg
میخواستم بدونم که درون این کادرها چه چیزی که صحیح می باشد که بنویسم
اگر احتیاج هست تا برنامه را هم ارسال کنم
« آخرين ويرايش: 26 دي 1388,ساعت 14:14:47 توسط كياني » خارج شده است

به هرجا که سر زدم دری بسته شد
به هر جا که در زدم سری شکسته شد
انجمن تخصصی استادان و دانشجویان کامپیوتر ایران
« پاسخ #6 : 26 دي 1388,ساعت 11:24:46 »


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

 خارج شده است
asan
کاربر جدید
*

تشكرها : 0
آفلاین آفلاین

تعداد ارسال: 34


ديدن مشخصات
« پاسخ #7 : 19 اسفند 1388,ساعت 10:12:37 »

سلام من نرم افزار sql server 2008 رو لازم دارم
میتونید در اختیارم بگذارین
ممنون
خارج شده است
كیانی
مديريت سايت
*****

تشكرها : 172
آنلاین آنلاین

جنسيت : پسر
تعداد ارسال: 1316


اليس الله بكاف عبده ؟!


ديدن مشخصات WWW
« پاسخ #8 : 19 اسفند 1388,ساعت 14:15:56 »

سلام من نرم افزار sql server 2008 رو لازم دارم
میتونید در اختیارم بگذارین
ممنون

سلام
لطفاً قوانين انجمن را مطالعه نموده و رعايت فرماييد !

نقل قول
16) در صورت مشاهده هرگونه لینک دانلود یا هر اسکریپت و برنامه ای که شامل قوانین بین المللی کپی رایت می شود و بصورت تجاری و غیر رایگان از سوی سازنده اش منتشر شده است، بدون اطلاع قبلی تاپیک حذف و در صورت تکرار با کاربر برخورد خواهد شد.

يا حق
خارج شده است

" فقال رب انی لما انزلت الی من خیر فقیر (قصص 24) * اللهم عجل لوليك الفرج"

منتظر شما در این هم اندیشی هستیم ...
هم اندیشی برای بهبود عملکرد سایت آیاپیر
asan
کاربر جدید
*

تشكرها : 0
آفلاین آفلاین

تعداد ارسال: 34


ديدن مشخصات
« پاسخ #9 : 23 اسفند 1388,ساعت 12:01:17 »

با سلام حضور دوستان یک فایل آموزش تصویری c# میخواستم آدرس جایی رو دارین که بشه از اونجا دانلودکرد؟
خارج شده است
كیانی
مديريت سايت
*****

تشكرها : 172
آنلاین آنلاین

جنسيت : پسر
تعداد ارسال: 1316


اليس الله بكاف عبده ؟!


ديدن مشخصات WWW
« پاسخ #10 : 23 اسفند 1388,ساعت 12:08:21 »

سلام

با سلام حضور دوستان یک فایل آموزش تصویری c# میخواستم آدرس جایی رو دارین که بشه از اونجا دانلودکرد؟

لطفاً قوانين انجمن را رعايت كنيد و از طرح سوال نامرتبط در تاپيك ها خودداري نماييد و براي سوالات خود تاپيك جديد ايجاد نماييد.
خارج شده است

" فقال رب انی لما انزلت الی من خیر فقیر (قصص 24) * اللهم عجل لوليك الفرج"

منتظر شما در این هم اندیشی هستیم ...
هم اندیشی برای بهبود عملکرد سایت آیاپیر
انجمن تخصصی استادان و دانشجویان کامپیوتر ایران
   


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

 خارج شده است
صفحه: [1]   بالا
  چاپ صفحه  
 
پرش به :