amirmk
جمعه 07 تیر 1387, 20:03 عصر
سلام به دوستان محترم سایت برنامه نویس , الحق که خیلی چیزها از تاپیک های شما یادگرفتم و از زحمات شما تشکر می کنم .
من یک کلاس کانکشن از روی یکی از آموزشها دارم و بصورت using() از آن استفاده می کنم و
کارهای درج , ویرایش , حذف تکی یا مجموعه ایی و ... را بخوبی انجام می دهم . ولی برای مرتب سازی و الاخصوص جستجو از طریق این کلاس نمی دانم چطوری این کار را انجام بدهم .
یعنی اولا" DataView و Dataset را چطوری در کلاس تعریف کنم که هم به مقصودم برسم و هم اصول شیئی گرایی را رعایت کرده باشم .
دوم -اینکه چگونه با استفاده از دستور using از قابلیت های مذکور (جستجو و مرتب سازی) در فرم ها استفاده کنم (یا آن را پیاده سازی کنم).
یک سوال سومی هم دارم و آن اینکه من یعد از درج و یا حذف اطلاعات از Fill کردن مجددبوسیله تابع fill موجود در کلاسم استفاده می کنم , که البته می خواهم برای استفاده کمتر از SELECT از تابع Referesh موجود در دیتاگرید استفاده کنم ولی نمی دانم چرا refresh
نمی شود , یعنی هیچ عملی انجام نمی دهد.datagridview1.refresh()
این کد کلاس Connection
namespace PhoneBook
{
class Connection : IDisposable
{
private static string strCon = "";
private SqlConnection scon;
private SqlCommand scom;
private SqlDataAdapter sda;
private SqlCommandBuilder cb;
Private DataSet ds = new DataSet();
private DataView dv;
private BindingSource BindingSource1 = new BindingSource();
public Connection()
{
scon = new SqlConnection(strCon);
scon.Open();
scom = new SqlCommand();
scom.Connection = scon;
sda = new SqlDataAdapter(scom);
scom.CommandType = CommandType.Text;
cb = new SqlCommandBuilder(sda);
}
public static string ConnectionString
{
set { strCon = value; }
get { return strCon; }
}
private void Dispose(bool Disposing)
{
scon.Close();
}
public void Dispose()
{
Dispose(true);
}
public SqlConnection objConnection
{
get { return scon; }
set { scon = value; }
}
public SqlDataAdapter Adapter
{
get { return sda; }
set { sda = value; }
}
public SqlCommand Command
{
set { scom = value; }
get { return scom; }
}
public SqlCommandBuilder Builder
{
get { return cb; }
set { cb = value; }
}
public void FillDataGrid(DataGridView dgvList)
{
this.sda.Fill(ds,"public");
dv = new DataView(ds.Tables["public"]);
BindingSource1.DataSource = dv;
dgvList.DataSource = BindingSource1;
}
#region IDisposable Members
void IDisposable.Dispose()
{
Dispose(true);
}
#endregion
}
}
این هم نمونه using که در فرم ها استفاده می کنم .
using (Connection objConn = new Connection())
{
objConn.Command.CommandText =
"UPDATE [comments] SET comment = @comment WHERE comments.id = @id; " +
"UPDATE [addresses] SET address = @address WHERE addresses.id = @id; " +
"UPDATE [contacts] SET worktel = @worktel, hometel = @hometel, mobile = @mobile, fax = @fax, email = @email, url = @url WHERE contacts.id = @id; " +
"UPDATE [public] SET fname = @fname, lname = @lname, company = @company, section = @section WHERE [public].id = @id;";
objConn.Command.CommandType = CommandType.Text;
objConn.Command.Parameters.AddWithValue("@id", intID);
objConn.Command.Parameters.AddWithValue("@fname", txtName.Text);
objConn.Command.Parameters.AddWithValue("@lname", txtLastName.Text);
objConn.Command.Parameters.AddWithValue("@company", txtCompany.Text);
objConn.Command.Parameters.AddWithValue("@worktel", txtWorkTel.Text);
objConn.Command.Parameters.AddWithValue("@hometel", txtHomeTel.Text);
objConn.Command.Parameters.AddWithValue("@mobile", txtMobile.Text);
objConn.Command.Parameters.AddWithValue("@fax", txtFax.Text);
objConn.Command.Parameters.AddWithValue("@email", txtEmail.Text);
objConn.Command.Parameters.AddWithValue("@url", txtUrl.Text);
objConn.Command.Parameters.AddWithValue("@address", txtAddress.Text);
objConn.Command.Parameters.AddWithValue("@comment", txtComment.Text);
objConn.Command.Parameters.AddWithValue("@section", cmbGroup.SelectedItem.ToString());
try { objConn.Command.ExecuteNonQuery(); }
catch (SqlException sqlExceptionErr) { MessageBox.Show(sqlExceptionErr.Message); }
}
با تشکر قبلی از توجه شما
امیر
من یک کلاس کانکشن از روی یکی از آموزشها دارم و بصورت using() از آن استفاده می کنم و
کارهای درج , ویرایش , حذف تکی یا مجموعه ایی و ... را بخوبی انجام می دهم . ولی برای مرتب سازی و الاخصوص جستجو از طریق این کلاس نمی دانم چطوری این کار را انجام بدهم .
یعنی اولا" DataView و Dataset را چطوری در کلاس تعریف کنم که هم به مقصودم برسم و هم اصول شیئی گرایی را رعایت کرده باشم .
دوم -اینکه چگونه با استفاده از دستور using از قابلیت های مذکور (جستجو و مرتب سازی) در فرم ها استفاده کنم (یا آن را پیاده سازی کنم).
یک سوال سومی هم دارم و آن اینکه من یعد از درج و یا حذف اطلاعات از Fill کردن مجددبوسیله تابع fill موجود در کلاسم استفاده می کنم , که البته می خواهم برای استفاده کمتر از SELECT از تابع Referesh موجود در دیتاگرید استفاده کنم ولی نمی دانم چرا refresh
نمی شود , یعنی هیچ عملی انجام نمی دهد.datagridview1.refresh()
این کد کلاس Connection
namespace PhoneBook
{
class Connection : IDisposable
{
private static string strCon = "";
private SqlConnection scon;
private SqlCommand scom;
private SqlDataAdapter sda;
private SqlCommandBuilder cb;
Private DataSet ds = new DataSet();
private DataView dv;
private BindingSource BindingSource1 = new BindingSource();
public Connection()
{
scon = new SqlConnection(strCon);
scon.Open();
scom = new SqlCommand();
scom.Connection = scon;
sda = new SqlDataAdapter(scom);
scom.CommandType = CommandType.Text;
cb = new SqlCommandBuilder(sda);
}
public static string ConnectionString
{
set { strCon = value; }
get { return strCon; }
}
private void Dispose(bool Disposing)
{
scon.Close();
}
public void Dispose()
{
Dispose(true);
}
public SqlConnection objConnection
{
get { return scon; }
set { scon = value; }
}
public SqlDataAdapter Adapter
{
get { return sda; }
set { sda = value; }
}
public SqlCommand Command
{
set { scom = value; }
get { return scom; }
}
public SqlCommandBuilder Builder
{
get { return cb; }
set { cb = value; }
}
public void FillDataGrid(DataGridView dgvList)
{
this.sda.Fill(ds,"public");
dv = new DataView(ds.Tables["public"]);
BindingSource1.DataSource = dv;
dgvList.DataSource = BindingSource1;
}
#region IDisposable Members
void IDisposable.Dispose()
{
Dispose(true);
}
#endregion
}
}
این هم نمونه using که در فرم ها استفاده می کنم .
using (Connection objConn = new Connection())
{
objConn.Command.CommandText =
"UPDATE [comments] SET comment = @comment WHERE comments.id = @id; " +
"UPDATE [addresses] SET address = @address WHERE addresses.id = @id; " +
"UPDATE [contacts] SET worktel = @worktel, hometel = @hometel, mobile = @mobile, fax = @fax, email = @email, url = @url WHERE contacts.id = @id; " +
"UPDATE [public] SET fname = @fname, lname = @lname, company = @company, section = @section WHERE [public].id = @id;";
objConn.Command.CommandType = CommandType.Text;
objConn.Command.Parameters.AddWithValue("@id", intID);
objConn.Command.Parameters.AddWithValue("@fname", txtName.Text);
objConn.Command.Parameters.AddWithValue("@lname", txtLastName.Text);
objConn.Command.Parameters.AddWithValue("@company", txtCompany.Text);
objConn.Command.Parameters.AddWithValue("@worktel", txtWorkTel.Text);
objConn.Command.Parameters.AddWithValue("@hometel", txtHomeTel.Text);
objConn.Command.Parameters.AddWithValue("@mobile", txtMobile.Text);
objConn.Command.Parameters.AddWithValue("@fax", txtFax.Text);
objConn.Command.Parameters.AddWithValue("@email", txtEmail.Text);
objConn.Command.Parameters.AddWithValue("@url", txtUrl.Text);
objConn.Command.Parameters.AddWithValue("@address", txtAddress.Text);
objConn.Command.Parameters.AddWithValue("@comment", txtComment.Text);
objConn.Command.Parameters.AddWithValue("@section", cmbGroup.SelectedItem.ToString());
try { objConn.Command.ExecuteNonQuery(); }
catch (SqlException sqlExceptionErr) { MessageBox.Show(sqlExceptionErr.Message); }
}
با تشکر قبلی از توجه شما
امیر