PDA

View Full Version : سوال: مشکل در update



bahar123
یک شنبه 21 آذر 1389, 12:59 عصر
در یک عملیات ساده update گیر کردم.استور پروسیجر و توایع سی شارپ رو گذاشتم.چیز جالبی که رخ میده این هست که وقتی روی دکمه ویرایش کلیک میشه ، تمامی عملیات با موفق انجام میشه صفحه postbackمیشه و حتی توی صفحه اطلاعات جدید update شده رو نمایش میده:متعجب:.اما در دیتابیس هیچ چیزی تغییر نمیکنه و مقادیر همون مقدارهای قبلی باقی می مونند.جدول هیچ مشکلی نداره ، من به همین صورت عملیات insert رو با همین جدول انجام داده اما کجای این دستور اشتباهه نمیدونم.
استور پروسیجر:



ALTER PROCEDURE dbo.user_update
@id int,@name nvarchar(max),@fam nvarchar(max),@email nvarchar(max),@tel nvarchar(max),@pass nvarchar(max)
AS
UPDATE users
SET nam = @nam,family = @fam,email = @email,tel = @tel ,password = @pass
WHERE ID = @id
RETURN


کد تابع اجرا کننده استورپروسیجر:



public int update(int idx,string name, string family, string email, string tel, string password)
{
SqlCommand cmd = new SqlCommand("user_update",
new SqlConnection(Settings.GetConnectionString));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(new SqlParameter[] {
new SqlParameter("@id", idx),
new SqlParameter("@nam", name),
new SqlParameter("@fam",family),
new SqlParameter("@email",email),
new SqlParameter("@tel",tel),
new SqlParameter("@pass", password)});

cmd.Connection.Open();
try
{
cmd.ExecuteNonQuery();
cmd.Connection.Close();
return 1;
}
catch (Exception ex)
{
return 0;
}
}



کد دکمه ویرایش:





protected void btnEdit_Click(object sender, EventArgs e)
{
int result = new user().update(userID, txtName.Text, txtFamily.Text, txtEmail.Text, txtMobile.Text, txtPass.Text);
if (result == 1)
{
lbl_msg.Visible = true;
lbl_msg.Text = "مشخصات شما به روز شد.";
txtName.Enabled = txtFamily.Enabled = txtEmail.Enabled = txtMobile.Enabled = txtPass.Enabled = false;
}
else if (result == 0)
{
lbl_msg.Visible = true;
lbl_msg.Text = "درحال حاضر امکان ویرایش مشخصات وجود ندارد.لطفا بعدا تلاش کنید.";
}
}

arash22
یک شنبه 21 آذر 1389, 13:05 عصر
بهتره براي تست صحت Update روي بانك از Sql Profiler استفاده كني

حمیدرضاصادقیان
یک شنبه 21 آذر 1389, 14:22 عصر
من تاپیک شما رو به بخش C# منتقل کردم ولی بازم ایجاد کردید.لطفا مطالبتون رو در یک تاپیک پیگیری کنید.
ببینید شما اون Procedure رو مستقیما در داخل خود SQL Server بهش مقدار بدید ببینید کار میکنه یاخیر.
بعد چرا طول متغیرها رو همرو max گرفتید؟؟؟
در ضمن نیازی هم به Return در انتهای Procedure نمی باشد.

bahar123
یک شنبه 21 آذر 1389, 19:59 عصر
لطفا کمی تاپیک هامو دقیقتر بخونید اون تاپیک که حذفش کردید با این فرق میکرد.
sp مستقیما کار میکنه اما تو کد که میاد کار نمیکنه.
فعلا سوالم اینه که مشکل دات نتی من کجاست . بقیه اش مهم نیست.

m_omrani
یک شنبه 21 آذر 1389, 20:57 عصر
ممکنه ديتابيس readonly باشه.

حمیدرضاصادقیان
دوشنبه 22 آذر 1389, 07:00 صبح
ممکنه ديتابيس readonly باشه.
لطفا سوال رو با دقت بخوانید.


sp مستقیما کار میکنه اما تو کد که میاد کار نمیکنه.

اگر دیتابیس در حالت ReadOnly باشه که نباید مستقیما هم کار کنه.

bahar123
دوشنبه 22 آذر 1389, 11:27 صبح
کسی راه حلی به ذهنش نرسید؟
تمام جاها داره درست کار میکنه.همین یه تیکه می لنگه

nima.mehdi
سه شنبه 23 آذر 1389, 15:38 عصر
یعنی وقتی پروسجر insert را در سی شارپ استفاده می کنید درست insert می کنه؟