PDA

View Full Version : مشکل با update



بیتافرهی
چهارشنبه 30 مرداد 1387, 21:28 عصر
سلام
من توی برنامم که برنامه ای است که با سی شارپ و دیتابیس sqlserver2005 است، با edit مشکل دارم.(برنامه در مورد پر کردن فرم است)
مشکلم اینه که وقتی کاربر می خواد فیلدی را که کلید اصلی است ویرایش کند با مشکل روبهرو می شه و برنامه با نشان دادن خطا قطع می شود.در صورتی که اگر کاربر بخواهد فیلد دیگری را ویرایش کند برنامه مشکلی ندارد.
کد کامل را براتون می ذارم .قسمت اول کد مربوط به save است و قسمت else مربوط به edit.

private void btnSave_Click(object sender, EventArgs e)
{
////SAVE
if (newmode == true)
{
newrow["id"] = Convert.ToInt32(textBox1.Text);
newrow["computer_name"] = textBox2.Text;
newrow["user_name"] = textBox3.Text;
newrow["ip_add"] = textBox4.Text;
newrow["domain_name"] = textBox5.Text;
newrow["workgroup_name"] = textBox6.Text;
newrow["registeration_name"] = textBox7.Text;
newrow["company_name"] = textBox8.Text;
ds.Tables["tbl_computer"].Rows.Add(newrow);
cb = new SqlCommandBuilder(da);
da = cb.DataAdapter;

da.Update(ds, "tbl_computer");////////////error vaghti az navigation estefade mikonam.

MessageBox.Show(" save ");///////man
con.Close();
newmode = false;///////man man
}
else
{
SqlCommand com = new SqlCommand("update tbl_computer set id='" + Convert.ToInt32(textBox1.Text) +
"',computer_name='" + textBox2.Text + "',user_name='" + textBox3.Text + "',ip_add='" + textBox4.Text +
"',domain_name='" + textBox5.Text + "',workgroup_name='" + textBox6.Text + "',registeration_name='" + textBox7.Text +
"',company_name='" + textBox8.Text +
" 'where id=" + int.Parse(textBox1.Text), con);
con.Open();
int result = com.ExecuteNonQuery();
if (result > 0)
{
MessageBox.Show("virayesh shod");
}
// button6_Click(null, null);/////////////nan
con.Close();/////////////nan

// cb = new SqlCommandBuilder(da);
// da.Update(ds, "st_table");
}
}
/////////////////////////////////////////////////////////////////////////////////////


من برای رفع این مشکل به فکرم رسید که مقدار کلید اصلی را در یک متغیر ذخیره کنم بعد اون را در قسمت where بگذارم ولی با این کارم وقتی که بانک را باز کردم دیدم یه سطر جدید با id ای که من جدیدا فقط به منظور ویرایشش وارد کردم اضافه شده بود.و رکورد قبلی که می خواستم ویرایشش کنم نیز بود.البته در این کد که براتون فرستادم این کار را اعمال نکردم.
اگر از sp(store procedure استفاده کنم، درست می شود؟برای رفع این مشکل چه کنم؟

mtcox3000
جمعه 01 شهریور 1387, 17:48 عصر
سلام
شاید فیلد اصلی شما مقدار آتونامبر داره یا شاید مقدار جدیدی که وارد میکنید قبلا در سطر دیگری وارد شده.