در این مقاله عملیات مختلف روی بانک اطلاعاتی را با استفاده از کدنویسی انجام داده و قصد داریم از ویزاردهای سی شارپ کمتر استفاده کنیم.در این قسمت برای پیاده سازی عملیات مختلف را روی یک جدول نمونه از بانک اطلاعاتی در محیط SQL Server استفاده می کنیم.
جدول مورد استفاده :
studs(sid , name , avgr , fid)
که ستون sid کلید اصلی بوده و شناسه(identity) هم هست .
لازم به ذکر است بانک اطلاعات SQL Server به لحاظ در قدرت و کارآیی بالا، انتخاب شده است. و با اندکی تغییر در کدهای این فصل می توان آنها را برای بانک های اطلاعاتی Accessیا هر بانک دیگری بکاربرد.
در ابتدای همه فایل های کد نویسی در این فصل، لازم است فضاهای نامی Data و SqlClient بصورت زیر معرفی شوند:
usingSystem.Data.SqlClient;
برای نمایش رکورد های جدول بانک اطلاعاتی در یک دیتا گرید ، ابتدا یک کامپوننت DataGridView از جعبه ابزار به فرم اضافه کرده و نام مناسبی برای آن تعیین می کنیم (مثل dg ) . سپس با ایجاد یک کامپوننت DataAdopter و یک کامپوننت DataTable (جدول)و اجرای متد Fill از دیتا آداپتور و پر کردن جدول و اتصال دیتاگرید به جدول با مقداردهی خاصیت DataSource آن به جدول ، اطلاعات جدول در دیتاگرید نمایش داده خواهد شد.
SqlConnection conn =
newSqlConnection Server=.;Database=amoozesh;
Integrated Security=true");
SqlDataAdapter da =
newSqlDataAdapter("SELECT * FROM tbl_studs", conn);
DataTable dt = newDataTable();
conn.Open();
da.Fill(dt);
conn.Close();
dg.DataSource = dt;
با تعریف متغیر conn بصورت عمومی و استاتیک در داخل کلاس frmStuds بصورت زیر ، امکان استفاده از آن در همه توابع frmStuds وجود خواهد داشت.
public static SqlConnection
conn =newSqlConnection("Server=.;Database=amoozesh;
Integrated Security=true");
2- درج رکورد جدید:
برای درج سطر جدید ابتدا باید یک فرم خالی نشان داده شود و پس از وارد کردن داده ها و تائید اطلاعات یک دستور پرس و جوی Insert به زبان SQL روی بانک اطلاعاتی اجرا شود به عنوان مثال با داشتن یک فرم برای ثبت مشخصات یک دانشجوی جدید در جدول studsبصورت زیر :
txtSid.Text شماره دانشجویی
txtName.Text نام
txtAvgr.Text معدل
txtFid.Text کدرشته
دستورات زیر را اجرا می کنیم:
String sql =String.Format("INSERT INTO tbl_studs(name,avgr,fid) VALUES(‘{0}’,{1},{2})"
,txtName.Text,txtAvgr.Text, txtFid.Text );
SqlCommand cmd = newSqlCommand(sql, frmStuds.conn);
Conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
3- حذف یک رکورد از جدول :
برای حذف یک یا چند سطر از جدول باید ابتدا اطلاعاتی در مورد سطرها دریافت کنیم به عنوان مثال ممکن است بخواهیم دانشجویی از جدول studs را حذف کنیم که در دیتاگرید انتخاب شده است . پس از بدست آوردن شماره دانشجویی می توانیم دستور Delete را به زبان SQL ایجاد کرده و اجرا کنیم.
stringsid = dg.CurrentRow.Cells[0].Value.ToString();
SqlCommand cmd = newSqlCommand("DELETE FROM tbl_studs WHERE sid=" + sid, frmStuds.conn);
Conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
4- اصلاح یک رکورد از جدول :
برای ویرایش یک سطر لازم است ابتدا کلید اصلی مربوط به رکورد مورد نظر را تعیین کنیم ، به عنوان یک روش می توانیم در دیتا گرید سطر مورد نظر را انتخاب کرده و روی دکمه ویرایش کلیک کنیم .سپس با اجرای یک دستور پرس و جو اطلاعات رکورد را از بانک اطلاعاتی استخراج کرده و در یک فرم قرار می دهیم تا کاربر تغییرات لازم را بتواند انجام داده و تغییرات را تائید کند.
SqlDataAdapter da =
newSqlDataAdapter("SELECT * FROM tbl_studs WHERE sid=" + sid , frmStuds.conn);
DataTable dt = newDataTable();
conn.Open();
da.Fill(dt);
conn.Close();
txtSid.Text = dt.Rows[0]["sid"].ToString();
txtName.Text = dt.Rows[0]["name"].ToString();
txtAvgr.Text = dt.Rows[0]["avgr"].ToString();
txtFid.Text = dt.Rows[0]["fid"].ToString();
پس از تائید اطلاعات فرم می توانیم یک دستور Update به زبان SQL ایجاد کرده و اجرا کنیم:
String sql =String.Format("UPDATE studs SET name='{0}’,avgr={1},fid={2} WHERE sid={3} "
, txtName.Text ,txtAvgr.Text
, txtFid.Text ,txtSid.Text) ;
SqlCommand cmd = newSqlCommand(sql, frmStuds.conn);
Conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
در فرم ویرایش شماره دانشجویی باید فقط خواندنی بوده تا در حین ویرایش تغییر نکند.