PDA

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



alie_p
شنبه 10 مرداد 1388, 19:52 عصر
سلام،خوبید؟
من یه مشکلی دارم در رابطه با update، می خوام یه سری اطلاعات توی تکس باکس ها در دیتابیس update بشه، کد error نداره، کار میکنه ولی تو دیتابیس به جای کاراکترها علامت سوال(؟) میذاره. اشکالش از چیه؟
راهنماییم کنید ممنون میشم.مرسی



String strConn = "server=ALIE-6563B73827;Database=crm;" + "Integrated Security=True";
SqlConnection Conn = new SqlConnection(strConn);
SqlCommand Cmd = new SqlCommand("update opportunity set oname='"+ textbox2.Text + "' , accountname='"+ textbox4.Text + "' where oname=N'" + textbox1.Text + "'", Conn);

Conn.Open();
Cmd.ExecuteNonQuery();

kiani_behzad
شنبه 10 مرداد 1388, 20:10 عصر
دوست عزیز احتمالا داری اطلاعات فارسی وارد میکنی که به این مشکل میخوری اگه فارسی هست این دو کارو کنی درست میشه:
1- فیلدهای چدول دیتابیس از نوع n باشه مثلا nchar یا ntext
2- باید تو دستور update از حرف N به صورت زیر استفاده کنی:
'update tablename set field1=N'hello

alie_p
شنبه 10 مرداد 1388, 20:44 عصر
ممنون بله همینطوره. اطلاعات فارسی وارد میشه.
فیلد ها هم از نوع nvarchar هست.
روش دومم امتحان کردم ولی اون رو اصلا اجرا نمی کنه!!! در حالت قبل حداقل (؟) میذاشت.
با این اوصاف چی کارش کنم؟ :ناراحت:

Reza_Yarahmadi
شنبه 10 مرداد 1388, 22:54 عصر
اگه داده هاتو بصورت پارامتر به دستور SQL بفرستی احتمالا مشکلت حل بشه

SqlCommand Cmd = new SqlCommand("update opportunity set oname = @NewOName , accountname = @AccountName where oname like OldOName", Conn);
Cmd.Parameters.AddWithValue("@NewOName", textbox2.Text);
Cmd.Parameters.AddWithValue("@AccountName", textbox4.Text);
Cmd.Parameters.AddWithValue("@OldOName", textbox1.Text);
در ضمن بعضی مواقع اطلاعات فارسی توی SQL Server بصورت علامت سؤال دیده میشه ولی توی برنامه بدون مشکل نمایش داده میشه اینطور مواقع چندان مهم نیست و بهش توجه نکن! ولی اگر داده ها رو همیشه بصورت پارامتر بفرستی و توی شرط به جای عملگر = از عملگر Like استفاده کنی معمولا مشکلی پیش نمیاد.

kiani_behzad
شنبه 10 مرداد 1388, 23:20 عصر
ممنون بله همینطوره. اطلاعات فارسی وارد میشه.
فیلد ها هم از نوع nvarchar هست.
روش دومم امتحان کردم ولی اون رو اصلا اجرا نمی کنه!!! در حالت قبل حداقل (؟) میذاشت.
با این اوصاف چی کارش کنم؟
'update tablename set field1=N'hello

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


SqlCommand Cmd = newSqlCommand("update opportunity set oname=N'"+ textbox2.Text + "' , accountname=N'"+ textbox4.Text + "' where oname=N'" + textbox1.Text + "'", Conn);

kiani_behzad
شنبه 10 مرداد 1388, 23:24 عصر
روش استاندارد ترش همینه که آقا رضا میگن.
اما به هر حال هر دو روش جواب میده.
اگه نتونستی بگو کد کاملشو بنویسم.

alie_p
یک شنبه 11 مرداد 1388, 00:00 صبح
من هر دوتاشو امتحان کردم! بازم اجرا نمیشه
کدمم مثل کد شماست!
آخه چرا جواب نمیده؟:ناراحت::گریه:

kiani_behzad
یک شنبه 11 مرداد 1388, 10:56 صبح
من هر دوتاشو امتحان کردم! بازم اجرا نمیشه
کدمم مثل کد شماست!
آخه چرا جواب نمیده؟:ناراحت::گریه:
کار نشد نداره دوست عزیز. ناامید نشو درست میشه.


SqlCommand Cmd = newSqlCommand("update opportunity set oname=N'"+ textbox2.Text + "' , accountname=N'"+ textbox4.Text + "' where oname=N'" + textbox1.Text + "'", Conn);


اگر خواستی برنامه رو آپلود کن ببینم.

alie_p
یک شنبه 11 مرداد 1388, 12:52 عصر
سلام
آخه کدش همینه، چیز خاصی نیست که! باید باتن کلیک یه باتن این دستورات(update) اجرا بشه.
همه چیش درسته! چرا اجرا نمیکنه آخه؟! نمیفهمم

بهنام بهمنی
یک شنبه 11 مرداد 1388, 14:24 عصر
collation پایگاه داده تان را به arabic_ci_as تغییر بده و دقت کن که بعد از این تغییر collaton تمام فیلدهای کاراکتر از پایگاه داده ارث برده باشند.

برای بررسی نحوه تغییر collation به انجمن مرتبط مراجعه کن

alie_p
یک شنبه 11 مرداد 1388, 14:57 عصر
سلام، ممنونم
ولی من این کار رو هم کردم بازم داخل دیتابیس علامت سوال میذاره!
به نظرتون اشکال از اینکدینگ خود پروژه نیست؟ نمی دونم از کجا باید این اینکدینگ رو ببینم و یا تغییرش بدم.
ممنون میشم اگه راهنماییم کنید. :لبخندساده: