PDA

View Full Version : شرط برای update دیتا بیس



nadia2174
جمعه 16 مرداد 1388, 02:45 صبح
با سلام.
من 4 تا textBox دارم که مي خوام هر کدومش که پر بود فيلد هاي مرتبط به TB هاي پر شده در جدول update بشه،(یعنی مثلا اگه اولی پر شد فقط فیلد اول پر شه اگه اولی و دومی،2 فیلدش پر شه و ...
چه طوري بايد شرط پر بودن رو بزارم؟ با if 16 حالت ميشه!با foreach چه طوري ميشه؟

ممنون،منتظرم

behnam-s
جمعه 16 مرداد 1388, 02:58 صبح
سلام
چرا میشه 16 حالت؟ یک strring برای command مشخص کنید و برای 4 تا textbox شبیه کد زیر رو بنویسید

string cmd="update table set "
if(textbox1.text!="")
cmd+=",field1=@field1"
cmd+=" where (id="+label1.text+")";
sqlcommand updcm=new sqlcommand(cmd,yourconnection)
updcm.parameters.add("@field1",sqldbtype.nchar).value=textbox1.text
و در آخر اجراش کنین

nadia2174
جمعه 16 مرداد 1388, 14:42 عصر
ممنون از راهنماییتون . ولی راستش درست متوجه نشدم شرط where رو کجا باید اضافه کنم
مثلا اگه
cmd="update users set age=textbox1,name=textbox2,....... where id=label1 "
باشه شرط رو چه طور بنویسم؟
ممنون.منتظرم.

nadia2174
جمعه 16 مرداد 1388, 15:07 عصر
در ضمن cmdتو سیستم من زیر مجموعه parameters نداره!(تو asp.net C#).
namespace که نداره؟
لطفا کد کاملش رو برام بنویسید(برای 2 textbox )

mtaboy
جمعه 16 مرداد 1388, 19:52 عصر
به نظرت دردسرش زیاد نمیشه دوسته من؟
شما بجای اینکار موقع آپدیت چهارتا تکست باس رو به فیلد مربوطش بایند کن بعد هر کدومو خواستی تغییر بده یه آپدیت ساده هم بنویس اونایی که دست نخوردن مثل قبل دوباره ثابت می مونن

behnam-s
شنبه 17 مرداد 1388, 01:11 صبح
سلام
ببخشید من در پست قبلیم چند اشتباه داشتم .
دوباره بخونیدش!
در ضمن استفاده از binding که دوستمون گفتن هم روش مناسبیه!

به نظرت دردسرش زیاد نمیشه دوسته من؟
بالاخره هر کس یه روشی داره !من کد نویسی رو که باعث کمتر شدن خطا و انعطاف بیشتر میشه ترجیح می دم

nadia2174
شنبه 17 مرداد 1388, 14:44 عصر
ممنون از راهنماییتون . این کد رو نوشتم:

SqlConnection con = new SqlConnection(conn);
con.Open();

string cmd = "update users set ";
if (TextBox1.Text.Length > 0)
{
cmd += "age=@age";
cmd += " where (ID='" + Label1.Text + "')";
SqlCommand update = new SqlCommand(cmd, con);
update.Parameters.Add("@age", SqlDbType.NVarChar).Value = TextBox1.Text;
update.ExecuteNonQuery();
}

if (TextBox2.Text.Length > 0)
{
cmd += "city=@city";
cmd += " where (ID='" + Label1.Text + "')";
SqlCommand update1 = new SqlCommand(cmd, con);
update1.Parameters.Add("@city", SqlDbType.NVarChar).Value = TextBox2.Text;
update1.ExecuteNonQuery();
}

if (TextBox3.Text.Length > 0)
{
cmd += "@telNumber=@telNumber";
cmd += " where (ID='" + Label1.Text + "')";
SqlCommand update2 = new SqlCommand(cmd, con);
update2.Parameters.Add("@age", SqlDbType.NVarChar).Value = TextBox3.Text;
update2.ExecuteNonQuery();
}

if (TextBox4.Text.Length > 0)
{
cmd += "@email=@email";
cmd += " where (ID='" + Label1.Text + "')";
SqlCommand update2 = new SqlCommand(cmd, con);
update2.Parameters.Add("@email", SqlDbType.NVarChar).Value = TextBox4.Text;
update2.ExecuteNonQuery();
}



con.Close();

زمانی که tbx2 رو پر می کنم این error رو میده:
Must declare the scalar variable "@age".

و همین طور فیل دهای بعدی.
با if else هم نوشتم نشد.هر دفعه یکی update میشه.
چی کار باید کرد؟

nadia2174
شنبه 17 مرداد 1388, 14:46 عصر
در ضمن اگه ممکنه روش binding رو بیشتر توضیح بدبد.
ممنون.

behnam-s
شنبه 17 مرداد 1388, 15:24 عصر
سلام
منظورم از اینکه

برای 4 تا textbox شبیه کد زیر رو بنویسیداینطوری بود!

SqlConnection con = new SqlConnection(conn);
con.Open();
string cmd = "update users set ";
SqlCommand update = new SqlCommand(cmd, con);
if (TextBox1.Text.Length > 0)
{
cmd += "age=@age";
update.Parameters.Add("@age", SqlDbType.NVarChar).Value = TextBox1.Text;
}
if (TextBox2.Text.Length > 0)
{

cmd += ",city=@city";
update.Parameters.Add("@city", SqlDbType.NVarChar).Value = TextBox2.Text;

}
if (TextBox3.Text.Length > 0)
{
cmd += ",telNumber=@telNumber";
update.Parameters.Add("@age", SqlDbType.NVarChar).Value = TextBox3.Text;
}
if (TextBox4.Text.Length > 0)
{
cmd += ",@email=@email";
update.Parameters.Add("@email", SqlDbType.NVarChar).Value = TextBox4.Text;
}
cmd += " where (ID='" + Label1.Text + "')";
update.ExecuteNonQuery();

nadia2174
شنبه 17 مرداد 1388, 18:50 عصر
این کد هم در زمان اجرا error زیر رو میده

Incorrect syntax near 'set'.
query رو هم چک کردم نمی دونم منظورش از set ،دیگه چیه؟!

behnam-s
شنبه 17 مرداد 1388, 22:40 عصر
کد رو ویرایش کردم . دوباره امتحان کنید

nadia2174
شنبه 24 مرداد 1388, 13:10 عصر
ممنون از کمکتون.