PDA

View Full Version : استفاده از کلاس در فرم



شهابسلطانی
جمعه 10 اردیبهشت 1395, 07:46 صبح
سلام
دوستان من کلاس زیر رو نوشتم
شامل
sqlconnection
sqlcommand
sqldataadapter
که بوسیله GetValue
و SetValue
داره عملیات رو بانک اطلاعاتیم انجام میده

class ConStrClass
{
public staticstring cons = new AMS.Profile.Ini(Application.StartupPath + "\\info.ini").GetValue("DataBase", "Host").ToString();
public staticstring strcon = @"Data Source=" + cons + "\\SQLEXPRESS;Initial Catalog=BOM;Persist Security Info=True;User =sa;Password=123";
public DataTable GetData(string Command)
{
DataTable dta = newDataTable();
SqlDataAdapter sda = newSqlDataAdapter(Command, strcon);
sda.Fill(dta);
return dta;
}


public void SetData(string Comand)
{
System.Data.SqlClient.
SqlConnection con = new System.Data.SqlClient.SqlConnection();
System.Data.SqlClient.
SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
con.ConnectionString = strcon;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}


}

حالا نمیدونم چطوری از دستور insert استفاده کنم
قبلا در public partial class کانکشن می نوشتم روی هر فرم
و برای insert بصوزت زیر می نوشتم:

sqlcommand cmd=new sqlcommand("insert into table valuse(@name,@fname)),con);
cmd.parameters.addwithvalue("@name",textboxname.text);
cmd.parameters.addwithvalue("@fname",textboxfname.text);
con.open();
cmd.ExecuteNonQuery();
con.close();

حالا نمیدونم چطوری بنویسمش لطفا راهنمایی بفرمایید
ممنون

ژیار رحیمی
جمعه 10 اردیبهشت 1395, 09:05 صبح
سلام اولا کلاس رو public کن و بعد با نمونه سازی از کلاس Method لازم رو فراخوانی کن

//روش اول
var obj=new ConStrClass();
var datatable= obj.GetData("sql command");


//روش دوم
var datatable= new ConStrClass().GetData("sql command");

شهابسلطانی
جمعه 10 اردیبهشت 1395, 10:09 صبح
با عرض معذرت میتونم خواهش کنم که یه نمونه کد بگذارید لطفا
من کانکشنم برقراره
فقط نمیدونم چطوری insert کنم
در fill کردن datagrid مشکلی ندارم
نموم مشکلم با insert کردنه
ممنون

mrprestige
جمعه 10 اردیبهشت 1395, 12:54 عصر
با عرض معذرت میتونم خواهش کنم که یه نمونه کد بگذارید لطفا
من کانکشنم برقراره
فقط نمیدونم چطوری insert کنم
در fill کردن datagrid مشکلی ندارم
نموم مشکلم با insert کردنه
ممنون
سلام دوست من به نظرم اگه میخواین داده هاتون در Datagird نمایش بدید باید دستور insert تون رو کمی تغییر بدید یعنی به این صورت


Dataset ds = new Dataset;
DataTable dt = new DataTable();
con.open();
sqlDataAdapter da = new sqlDataAdapter("insert into table(name,fname) valuse(' " + textboxname.text + "','" + textboxfname.text + " ' )", con);
da.Fill(ds);
DataGridview1.Datasource = ds;
con.close();

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

شهابسلطانی
شنبه 18 اردیبهشت 1395, 14:32 عصر
سلام اساتید
اول اینکه بگم خیلی ناراحتم از دوستان گروه بخاطر اینکه مشکل آدم رو حل کنن گره ای به اندازه زمین و اسمون میندازن تو کارت
اگر من سوال نداشته باشم قطعا تایپک ایجاد نمیکنم
و متاسفانه تایپک هم ایجاد میکنی بعد که باهزار امید میایی چککنی ببینی جواب معمات پیدا شده یا نه
می بینی که نوشته "این تایپک حذف شد" کلا اعصابت رو فدا میکنی
بگذریم
یه سوالی داشتم قبلا تو گروه و دوستان زحمت کشیدن تایپک من رو حذف کردن(البته ممنون ازشون) حالا جوابش رو بعد از چند روز کنکاش یافتم
سوال این بود چطوری میشه کلاس نوشت و توی فرم بهش دسترسی داشت مثلاکلاسی با متد Insert نوشت و در رویداد Button اونو فراخوند
گفتم جوابش رو که پیدا کردم بذارم تا یه بیچاره ای مثل من اگرلازمش شد ازش استفاده کنه

فقط لطفا مراحل رو به درستی طی کنید:
1-ابتدا یک کلاس بسازید
2-نام کلاس رو مثلا به Fields تغییر دهید
3- حالا در public کلاس نام ستون جدول خودتون رو بنویسید (البته با ذکر نوع مثلا int Code; یا strin Name;)
4- حالا بر روی هریک از آنها راست کلیک کنید و گزینه اول یعنی(Refactor) رو انتخاب کنید از منوی باز شده گزینهEncapsulate Field
یا کلید ترکیبی (Ctrl+R,Ctrl+E) رو فشاردهید می بینید که متد get , set رو خودش ساخت
5-حالا یک کلاس دیگه ایجاد کنید
2-نام کلاس رو مثلا به ConAndInsert تغییر دهید
3-using مربوط به sql رو اضافه کنید
4-در قسمت public بنویسید sqlconnection con; و sqlcommand cmd;
5- یک public void با نام ConnectToDB() ایجاد کنید
6-حالا رشته اتصال خودتون رو بنویسید بصورت زیر(البته شما باید رشته اتصال خودتون رو بنویسید)
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\CustomerCheqes\New Microsoft Office Access 2007 Database.accdb;Persist Security Info=False");
بعدش زیر همون رشته اتصال بنویسید
cmd = con.CreateCommand();
7-یه public به نام Connect() بسازید
8- این کد رو بنویسید (درواقع دارید رشته اتصال رو فرامیخونید) (همون مرحله 5 رو فراخوانی کنید)
ConnectToDB();
9- یه public Void به نام(Fields F)Insert بسازید
10-به شرح زیر کد نویسی کنید:

try
{
cmd.CommandText = "Insert Into Fielda (CodeP,NameP,NameV,TelP,EshelP) Values('"+F.CodeP1+"','"+F.EshelP1+"','"+F.NameP1+"','"+F.NameV1+"','"+F.TelP1+"')";
cmd.CommandType = System.Data.CommandType.Text;
con.Open();

cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw;

}
finally
{
if (con != null)
{
con.Close();
}
}



11- تا اینجا ذخیره کنید همه چیز رو
12-ابتدا به قسمت Public Partial فرم خودتون برید ونام کلاسی روکه ایجاد کردید فراخوانی کنید
مثلا ConAndInsert CAI=new ConAndInsert();
13- حالا در رویداد کلیک باتن کد زیر رو بنویسید
ابتدا کلاس Fields رو فراخوانی کنید
مثلا
Fields F=new Fields();
و بعد هم کد زیر رو بنویسید
F.Code=TxtCode.text;
F.Name=TxtName.text;



موفق باشید
سوالی بود در خدمتم

davidrobert
شنبه 18 اردیبهشت 1395, 16:02 عصر
سلام اساتید
اول اینکه بگم خیلی ناراحتم از دوستان گروه بخاطر اینکه مشکل آدم رو حل کنن گره ای به اندازه زمین و اسمون میندازن تو کارت
اگر من سوال نداشته باشم قطعا تایپک ایجاد نمیکنم
و متاسفانه تایپک هم ایجاد میکنی بعد که باهزار امید میایی چککنی ببینی جواب معمات پیدا شده یا نه
می بینی که نوشته "این تایپک حذف شد" کلا اعصابت رو فدا میکنی
بگذریم
یه سوالی داشتم قبلا تو گروه و دوستان زحمت کشیدن تایپک من رو حذف کردن(البته ممنون ازشون) حالا جوابش رو بعد از چند روز کنکاش یافتم
سوال این بود چطوری میشه کلاس نوشت و توی فرم بهش دسترسی داشت مثلاکلاسی با متد Insert نوشت و در رویداد Button اونو فراخوند
گفتم جوابش رو که پیدا کردم بذارم تا یه بیچاره ای مثل من اگرلازمش شد ازش استفاده کنه

فقط لطفا مراحل رو به درستی طی کنید:
1-ابتدا یک کلاس بسازید
2-نام کلاس رو مثلا به Fields تغییر دهید
3- حالا در public کلاس نام ستون جدول خودتون رو بنویسید (البته با ذکر نوع مثلا int Code; یا strin Name;)
4- حالا بر روی هریک از آنها راست کلیک کنید و گزینه اول یعنی(Refactor) رو انتخاب کنید از منوی باز شده گزینهEncapsulate Field
یا کلید ترکیبی (Ctrl+R,Ctrl+E) رو فشاردهید می بینید که متد get , set رو خودش ساخت
5-حالا یک کلاس دیگه ایجاد کنید
2-نام کلاس رو مثلا به ConAndInsert تغییر دهید
3-using مربوط به sql رو اضافه کنید
4-در قسمت public بنویسید sqlconnection con; و sqlcommand cmd;
5- یک public void با نام ConnectToDB() ایجاد کنید
6-حالا رشته اتصال خودتون رو بنویسید بصورت زیر(البته شما باید رشته اتصال خودتون رو بنویسید)
con = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\CustomerCheqes\New Microsoft Office Access 2007 Database.accdb;Persist Security Info=False");
بعدش زیر همون رشته اتصال بنویسید
cmd = con.CreateCommand();
7-یه public به نام Connect() بسازید
8- این کد رو بنویسید (درواقع دارید رشته اتصال رو فرامیخونید) (همون مرحله 5 رو فراخوانی کنید)
ConnectToDB();
9- یه public Void به نام(Fields F)Insert بسازید
10-به شرح زیر کد نویسی کنید:

try
{
cmd.CommandText = "Insert Into Fielda (CodeP,NameP,NameV,TelP,EshelP) Values('"+F.CodeP1+"','"+F.EshelP1+"','"+F.NameP1+"','"+F.NameV1+"','"+F.TelP1+"')";
cmd.CommandType = System.Data.CommandType.Text;
con.Open();

cmd.ExecuteNonQuery();
}
catch (Exception e)
{
throw;

}
finally
{
if (con != null)
{
con.Close();
}
}



11- تا اینجا ذخیره کنید همه چیز رو
12-ابتدا به قسمت Public Partial فرم خودتون برید ونام کلاسی روکه ایجاد کردید فراخوانی کنید
مثلا ConAndInsert CAI=new ConAndInsert();
13- حالا در رویداد کلیک باتن کد زیر رو بنویسید
ابتدا کلاس Fields رو فراخوانی کنید
مثلا
Fields F=new Fields();
و بعد هم کد زیر رو بنویسید
F.Code=TxtCode.text;
F.Name=TxtName.text;



موفق باشید
سوالی بود در خدمتم

سلام دوست عزیز بابت اموزشی تون درد نکونه آموزش خوبی هستش برای کاهش کد نویسی ولی در کلاس نویسی نمیشه کد مربوط به اسکیول رو برای کاهش کد نوشتم توسط استاد ارجمندم آقا یونس مرباغی و کد عالی هستش برای کاهش کد نویسی ولی ما بیشتر میتونیم دستورات ثابت رو کلاس نویسی کنیم و کاهش شدید کد نویسی داشت باشیم.
http://sayyehban.blogfa.com/post/24
ولی در اسکیول چون کداش و همین طور مقادیر دیتابیس عوض میشه کار سخت میشه به همین دلیل دستور مربوط به دیتابیس سخت میشه کلاس نویسی کردد. اما به دستورات ثابت نه