استفاده از کلاس ها باعث بهتر شدن برنامه نویسی و حرفه ای تر شدن برنامه می شود. در این قسمت برای انجام عملیات نمایش اطلاعات، درج ، حذف و ویرایش رکورد ها از یک کلاس بانک اطلاعاتی استفاده شده استدر بخش آموزش عملیات اصلی بانک اطلاعاتی با کدنویسی با نحوه انجام عملیات درج، حذف و نمایش اطلاعات آشنا شدید، در این قسمت با معرفی و ساخت کلاس بانک اطلاعاتی آن عملیات را به شکل راحت تر و حرفه ای تر انجام می دهید
برای اضافه کردن کلاس، در پنجره Solution explorer روی نام پروژه کلیک راست کرده و گزینه Add->Class را اجرا کنید و فایلی با نام DB.cs به پروژه اضافه کنید:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace WindowsFormsApplication2
{
classDB
{
}
}
حال می توانید کلاس DB را بصورت زیر کد نویسی کنید:
using System;
using System.Data;
using System.Data.SqlClient;namespace WindowsFormsApplication2
{
classDB
{
publicstaticSqlConnection conn = newSqlConnection("Server=.;Database=amoozesh;
Integrated Security=true");
publicstaticDataTable Query( string sql)
{
SqlDataAdapter da =newSqlDataAdapter(sql, conn);
DataTable dt = newDataTable();
conn.Open();
da.Fill(dt);
conn.Close();
return dt;
}
publicstaticvoid NonQuery( string sql)
{
SqlCommand cmd = newSqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
}
}
تابع Query(string sql) با دریافت یک دستور SELECT بعنوان پارامتر ، آنرا روی بانک اطلاعاتی اجرا کرده، نتیجه را در یک جدول ریخته و جدول را برمی گرداند.
تابع NonQuery(string sql) یک دستور غیر از SELECT (مثل دستورات DELETE ، INSERT یا UPDATE ) را بعنوان پارامتر دریافت کرده و اجرا می کند.
با داشتن کلاس DB برنامه نویسی عملیات مختلف روی بانک اطلاعاتی بسیار راحت تر می شود. بعنوان مثال برای پر کردن دیتاگرید dg از روی جدول دانشجویان، بجای دستورات قبلی، دستور زیر را می نویسیم:
dg.DataSource= DB.Query(“SELECT * FROM studs”);
یا برای اجرای عمل درج رکورد بجای کدهای قبلی می نویسیم:
string sql=String.Format("INSERT INTO tbl_studs(name,avgr,fid) VALUES(‘{0}’,{1},{2})" ,txtName.Text,txtAvgr.Text, txtFid.Text );
DB.Query(sql);
و برای حذف رکورد می نویسیم:
string sid = dg.CurrentRow.Cells[0].Value.ToString();
DB.Query("DELETE FROM studs WHERE sid=" + sid);
ویرایش رکورد در فرم جداگانه
برای ویرایش اطلاعات رکورد دانشجو در یک فرم جداگانه، می توان در فرمی که لیست دانشجویان را در دیتاگرید نشان می دهد، شماره دانشجوی انتخاب شده را از دیتاگرید استخراج کرده و با صورت پارامتری از تابع سازنده فرم ویرایش به آن منتقل کرد. در تابع سازنده فرم ویرایش، شماره دانشجویی را دریافت کرده ، با اجرای دستور SELECT روی بانک اطلاعاتی، مشخصات کامل دانشجو را بدست آورده و برای ویرایش نشان داد. پس از اصلاح اطلاعات و تائید، دستور UPDATE را اجرا کرده و به فرم اول برگشت.
نکته : تابع سازنده، تابعی است همنام با خود فرم که هنگام تخصیص حافظه به فرم بصورت خودکار فراخوانی می شود.
با فرض اینکه frmStuds حاوی دیتاگرید لیست دانشجویان و فرمfrmStudEdit برای ویرایش دانشجو باشد . در frmStuds هنگام کلیک روی دکمه ویرایش دستورات زیر را اجرا می کنیم:
string id = dg.CurrentRow.Cells[0].Value.ToString();
frmStudEditf = newfrmStudEdit(sid);
f.ShowDialog();
و تابع سازنده در فرم frmStudEdit را بصورت زیر می نویسیم :
publicpartialclassfrmStudEdit : Form
{
publicfrmStudEdit(string sid)
{
InitializeComponent();
SqlDataAdapter da =
newSqlDataAdapter("SELECT * FROM studs WHERE id=" + sid conn);
DataTable dt = newDataTable();conn.Open();
da.Fill(dt);
conn.Close();
if ( dt.Rows.Count>0 )
{
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();
}
}
…
}
فرم frmStudEdit می تواند دارای دو دکمه “تائید” و “انصراف” باشد. با کلیک روی دکمه تائید، دستور UPDATE به روشی که قبلاً توضیح داده شد، اجرا گردد و سپس فرم بسته شود .
پیاده سازی عمل جستجو
برای جستجوی رکوردها باید دستور select را به زبان SQL با شرایط مورد نظر اجرا کنیم.مثلا برای جستجوی دانشجویان بر اساس بخشی از نام می توان دستور را بصورت زیر اجرا کرد:
SELECT * FROM tbl_studs WHERE name like ‘%مقدار%’
و با فرض اینکه فرم frmStuds دارای یک جعبه متن بنام txtSrch باشد که کاربر با تایپ کاراکتر به کاراکتر نام دانشجو، نتیجه جستجو را در دیتاگرید مشاهده کند.
می توانیم در رویداد textChanged مربوط به txtSrch کد زیر را بنویسیم: