PDA

View Full Version : آموزش نوشتن کلاس با سی شارپ و غراخوانی آن در گرید ویو



reza97
شنبه 26 اسفند 1391, 11:09 صبح
سلام دوستان کسی هست که با کلاس دستور
select
رو در کلاس بنویسه و اونو در گرید ویو نشون بده
رو آموزش بده

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

reza97
شنبه 26 اسفند 1391, 22:37 عصر
من تعجب میکنم
این همه برنامه نویسی اینجا هستند اما کسی جواب نداد که دو تا پیش بینی میشه کرد
1) اینجا کسی با کلاس برنامه نویسی نمیکنه(اگر برنامه نویسی میکردن یه دونه آماده میتونستن کپی و پیست کنن اینجا یاد بگیریم)
2)با افزایش قیمت پسته و خودرو کسی حال کمک به هم نوع رو نداره(بنی آدم اعضای یکدیگرند ...)

من گزینه دو رو دلیلش میدونم.

asadi.hasan
شنبه 26 اسفند 1391, 23:31 عصر
سلام؛
شما ابتدا از قسمت Solution Explorer->Add New Item->Class.Cs رو انتخاب می کنی و تابعی رو که میخوای داخل اون کلاس تعریف می کنی
public class Sql
{
public Sql()
{
//
// TODO: Add constructor logic here
//
}
public static string yourfunction()//نام تابع
{
//کدهای شما


}
}
حالا هر جای پروژه که میخوای، میتونی این تابع رو از داخل این کلاس فراخوانی بکنی،مثلا:
string a = Sql.yourfunction();
که در اینجا Sql نام کلاس شما،وyourfunction ،متدی است که در کلاس دارید.
موفق باشید.

reza97
یک شنبه 27 اسفند 1391, 09:16 صبح
سلام؛
شما ابتدا از قسمت Solution Explorer->Add New Item->Class.Cs رو انتخاب می کنی و تابعی رو که میخوای داخل اون کلاس تعریف می کنی
public class Sql
{
public Sql()
{
//
// TODO: Add constructor logic here
//
}
public static string yourfunction()//نام تابع
{
//کدهای شما


}
}
حالا هر جای پروژه که میخوای، میتونی این تابع رو از داخل این کلاس فراخوانی بکنی،مثلا:
string a = Sql.yourfunction();
که در اینجا Sql نام کلاس شما،وyourfunction ،متدی است که در کلاس دارید.
موفق باشید.


ممنون دوست عزیز
از شما خیلی تشکر میکنم
مشکل اصلی من این قسمت هستش
public static string yourfunction()//نام تابع
{
//کدهای شما


}

اینجا هر کدی مینویسیم نشون نمیده
در حالت عادی مستقیم به گرید ویو بایند میکردیم شما اگر لطف کنید یک کد ساده برای واکشی اطلاعات رو اونجا بنویسید ممنون میشم
مثلا فرض کنیم در دیتا بیس یک فیلد داریم با نام name
میخواییم اونو بخونیم و در گرید ویو نمایش بدیم؟؟؟

مثلا من این کد رو نوشتم اما جواب نمیده


SqlConnection con = new SqlConnection(constr());
string str = "select * from tblqustion where id=@id";
SqlCommand cmd = new SqlCommand(str, con);
cmd.Parameters.AddWithValue("@id",id);
con.Open();
SqlDataReader sdr = cmd.ExecuteReader();
DataTable dt = new DataTable();
return dt;

asadi.hasan
یک شنبه 27 اسفند 1391, 15:42 عصر
public static DataTable showdata()//نام تابع
{
string con=@"Data Source=.;Initial Catalog=Test;Integrated Security=True";
SqlConnection cnn = new SqlConnection(con);
SqlDataAdapter da = new SqlDataAdapter();
DataTable dt = new DataTable();
da.SelectCommand = new SqlCommand();
da.SelectCommand.Connection = cnn;
da.SelectCommand.CommandText = "SELECT * from tabel1";
cnn.Open();
da.Fill(dt);
cnn.Close();
return dt;

}

و کدها ی داخل دکمه یا هرچیزی :

protected void Button1_Click(object sender, EventArgs e)
{
DataTable dt = Sql.showdata();
GridView1.DataSource = dt;
GridView1.DataBind();
}

فکر می کنم شما در دریافت و ذخیره ی هر نوع مقداری مشکل داشته باشید.
در اینجا چون خروجی متد ما از نوع Datatabel هست ،باید متد را از همین نوع تعریف کنیم و در جایی که این کلاس و این متد را فراخوانی می کنیم ،باید در یک شی از نوع Datatabel
ذخیره کنیم.
امیدوارم مشکلتون حل شده باشه.

reza97
یک شنبه 27 اسفند 1391, 17:01 عصر
ممنون از شما بله مشکلم حل شد.
اما چند مورد:
در مورد اینکه من باید در دریافت و ذخیره هر نوع مقدار مشکل داشته باشیم باید بگم بله مشکل دارم البته در درچ اطلاعات چه با استفاده از کلاس چه بدون کلاس مشکلی ندارم اما در فراخوانی اطلاعات چرا مشکل دارم و فرق بین
sqldata reder
sqldata adaptter
data table
رو نمیدونم که می باید از کدومش استفاده کنیم و یا اینکه این ها چه فرقی دارند

راستی در این کلاس چرا از
public static
استفاده شد یعنی استاتیک؟
در موقع اپلود کردن سایت این ها به مشکل نمیخورن؟یعنی برنامه خوب کار میکنه؟
وسوال آخر برای همیشه از شما میخواییم پارامتر رو اضافه کنیم مینوشتیم
cmd.parametrs.addwithvalue("@id",id)
اینجا بخواییم یه پارامتر اضافه کنیم چی مینویسیم؟
بازم خیلی از شما تشکر میکنم چرا که مدتی بد جور درگیر این مساله بودم که شما حل کردی

asadi.hasan
یک شنبه 27 اسفند 1391, 21:24 عصر
SqldataAdapter برای پر کردن Data set یا Datatabel استفاده میشه .

شما برای اجرای دستورات SQL و قراردادن اطلاعات واکشی شده در Dataset یا Datatabel، به دیتا آداپتر نیاز دارید .
اگر در کدها دقت کنید ؛fill متدی است در کلاس DataAdaptr که شی ایجاد شده از نوع datatabel رو به عنوان پارامتر برای اون ارسال کردیم .

public Static یعنی اینکه این متد به صورت عمومی وایستا تعریف می شود و در هر جایی از پروژه شما ،این متد قابل فراخوانی می باشد.
این کلاس ها ،کلاس های استانداردی هستند که در برنامه نویسی ASP.net استفاده میشن .چرا باید موقع آپلود مشکل به وجود بیارن.

برای استفاده از پارامتر ها در این روش از همان کدی که نوشتید استفاده میشه و فقط به جای CMD مینویسیم:
da.selectcommand.parameters.addwithvalue();که بقیه شو خودتون بلدید .
موفق باشید .

partovinia
جمعه 10 مهر 1394, 09:13 صبح
سلام دوستان گرامی
من می خوام با استفاده از سی شارپ و sql express در دیتابیس عمل درج رو انجام بدم ! البته بصورت شی گرا و استفاده از کلاسها که متاسفانه به هیچ عنوان استفاده از اون رو نمی دونم ...
من این برنامه رو نوشتم و نمی دونم الان باید چه طور بگم که از textbox1 مقدار رو به پارامتر ورودی stored procedure بده لطفا کمکم کنید که چه کار کنم ؟؟؟؟؟


namespace t3
{
class SQL
{
//fields
string txtfirstname = "";
string txtlastname = "";
string cmbmajor = "";

//method
public static string insert()
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\myDB.mdf;Integrated Security=True;User Instance=True");
SqlCommand cmd = new SqlCommand("insertinfo", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@stdfirstname",///چی بنویسم ؟؟؟؟؟؟
}
}
}