PDA

View Full Version : درخواست راهنمایی : نوشتن کلاس ها و ارتباط با کلاس ها



ya30ien2
یک شنبه 23 مهر 1391, 15:37 عصر
سلام
من کلاسی به شکل زیر نوشتم


private string Name;
public string name
{
get { return Name; }
set { Name = value; }
}

private string LName;
public string lname
{
get { return LName; }
set { LName = value; }
}



public int Insert(int Record=0)
{
SqlConnection connection = new SqlConnection(conn);
SqlCommand com = connection.CreateCommand();
try
{
connection.Open();
com.CommandText = "INSERT INTO UserName (NAME,LNAME) VALUES (@name,@lname)";
com.Parameters.Add("@name", SqlDbType.NVarChar, 50);
com.Parameters.Add("@lname", SqlDbType.NVarChar, 50);
com.Parameters["@name"].Value = name;
com.Parameters["@lname"].Value = lname;
com.ExecuteNonQuery();
}
catch (SqlException ex)
{
Record = 0;
}

finally
{
Record = 1;
connection.Close();

}
return Record;
}



و با کد زیر مقادیر رو به کلاس میفرستم


DB2 DB = new DB2();
DB.name=TextBox1.Text;
DB.lname = TextBox2.Text;
DB.Insert();


حالا مشکلی که دارم :
من با این کار مقادیر رو به کلاس فرستادم و کلاس رو فراخوانی کردم و مقادیر به بانک اضافه شده
اما میخوام مقدار record داخل کلاس رو بگیرم
که یعنی کار انجام شده یا نه و پیغامی رو به کاربر نمایش بدم
لطفا بگید چطوری مقدار رو بگیرم

ya30ien2
یک شنبه 23 مهر 1391, 17:11 عصر
کسی نبود
همه مثل خودم بی سواد هستن؟

hamed_hossani
یک شنبه 23 مهر 1391, 18:44 عصر
DB.Insert(); مفداد عددی بر می گردونه!
یک شرط بنویس که اگر 1 باشه بگه "باموفقیت انجام شد"
اگه 0 باشه بگه "اشکال در ارتباط"

ya30ien2
یک شنبه 23 مهر 1391, 23:57 عصر
DB.Insert(); مفداد عددی بر می گردونه!
یک شرط بنویس که اگر 1 باشه بگه "باموفقیت انجام شد"
اگه 0 باشه بگه "اشکال در ارتباط"
ممنون از راهنماییت مشکل حل شد
فقط یک مشکل که پیش اومد : در هر صورت مقدار برگشتی یک هستش
میشه بگید مشکل از کجای کد هستش

fakhravari
دوشنبه 24 مهر 1391, 00:15 صبح
این 1 که بر گشت داره تعداد تغیرات که انجام شده حالا insert یا update هست برگشت میده.
به قولا میگن RecordAffected

ya30ien2
دوشنبه 24 مهر 1391, 00:31 صبح
خوب حالا من برای حذف هم کد زیر رو نوشتم :


public int Delete(int Record=0)
{
SqlConnection connection = new SqlConnection(conn);
SqlCommand com = connection.CreateCommand();
try
{
connection.Open();
com.CommandText = "Delete from UserName where NAME=@name and LNAME=@lname";
com.Parameters.Add("@name", SqlDbType.NVarChar, 50);
com.Parameters.Add("@lname", SqlDbType.NVarChar, 50);
com.Parameters["@name"].Value = name;
com.Parameters["@lname"].Value = lname;
com.ExecuteNonQuery();
}
catch (SqlException ex)
{
Record = 0;
}

finally
{
Record = 1;
connection.Close();

}
return Record;

}


پس برای اینکه مشخص کنم که چیزی که میخوام حذف بشه و اگه وجود نداشته باشه صفر برگردونه حتما باید کد select بزارم ؟
یا همین کد رو باید بصورتی نوشت که در صورتی که مقدار درخواستی موجود نبود صفر برگردونه؟
و اگه همین کد رو باید تغییر بدم چطوری ؟

ya30ien2
دوشنبه 24 مهر 1391, 00:52 صبح
یه چیزی اگه بخوام دستور select رو بنویسم
باز همین کد رو تغییر بدم
منظورم اینه که دستور رو جایگذین دستور delete from username ... قرار بدم یا
دستور در کل فرق میکنه ؟
میخوام که در صورتی که موجود بود یک و نبود صفر بفرسته که بتونم کار رو ادامه بدم
بازم از کمک اساتید ممنون

fakhravari
دوشنبه 24 مهر 1391, 11:24 صبح
شما به هر حال دستور حذف بدین حد اقل اینه که در تابع
catch (SqlException ex) { Record = 0; }
میفته و مقدار 0 برگشت میده.
اگر دلیت شد 1

ya30ien2
دوشنبه 24 مهر 1391, 14:59 عصر
گفتم که در هیچ صورتی صفر برگشت نداد من هر جوری امتحان کردم همش یک برگشت داد

fakhravari
دوشنبه 24 مهر 1391, 15:28 عصر
دوست عزیز مقدار RecordAffected را از اجرای دستور com.ExecuteNonQuery(); باید بگیرید.

int RecordAffected = 0;
try
{
RecordAffected = command.ExecuteNonQuery();
}
catch { RecordAffected = 0; }
return RecordAffected;