PDA

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



دلتنگ اسمان
شنبه 20 مهر 1392, 12:28 عصر
به دو حالت هم نوشتم ولی هیچ اتفاقی نمیفته:کلید اصلی جدول: نام و فامیلی و نام بخش می باشد. ابتدا شخصی رو که میخواد ویرایش انجام بشه از بانک میخونه بعد این سه فیلد رو به فرم ویرایش پاس میده و کل اطلاعات شخص رو موقع لود فرم ویرایش ، در این فرم نمایش میده. بعد از انجام تغییرات باید تمامی فیلدها رو چک کنه حتی فیلدهای مربوط به کلید اصلی رو و در در صورت تغییر اپدیت کنه.
حالت اول :

string sql = "update nuresTabel set nameNures='{1}',familyNures='{2}',sexNures='{3}',s ematNures='{4}',"
+ "shiftNures='{5}',Upgrade_jobNures='{6}',estekhdamN ures='{7}',timeMozafiNures='{8}',startDateNures='{ 9}',endDateNures='{10}'" +
" where (bakhshname = '{0}' and nameNures='{1}' and familyNures='{2}')";
sql = string.Format(sql, txt_name.Text, txt_family.Text, cmb_sex.Text, cmb_semat.Text, cmb_shft.Text, cmb_Upgrade_job.Text
, cmb_Estekhdam_Status.Text, txt_time_moazafi.Text, cmb_Start_Date.Text, cmb_End_Date.Text, cmb_bakhshText, name, family);

com.CommandText = sql;

com.ExecuteNonQuery();


حالت دوم :


string sqlk = "update nuresTabel set nameNures=@p0,familyNures=@p1,sexNures=@p2,sematNu res=@p3 ,"
+ "shiftNures=@p4,Upgrade_jobNures=@p5,estekhdamNures =@p6,timeMozafiNures=@p7,startDateNures=@p8,endDat eNures=@p9" +
" where (bakhshname = @p10 and nameNures=@p11 and familyNures=@p12)";

com.Parameters.AddWithValue("@p0", txt_name.Text);
com.Parameters.AddWithValue("@p1", txt_family.Text);
com.Parameters.AddWithValue("@p2", cmb_sex.Text);
com.Parameters.AddWithValue("@p3", cmb_semat.Text);
com.Parameters.AddWithValue("@p4", cmb_shft.Text);
com.Parameters.AddWithValue("@p5", cmb_Upgrade_job.Text);
com.Parameters.AddWithValue("@p6", cmb_Estekhdam_Status.Text);
com.Parameters.AddWithValue("@p7", txt_time_moazafi.Text);
com.Parameters.AddWithValue("@p8", cmb_Start_Date.Text);
com.Parameters.AddWithValue("@p9", cmb_End_Date.Text);

com.Parameters.AddWithValue("@p10", cmb_bakhshText);
com.Parameters.AddWithValue("@p11", name);
com.Parameters.AddWithValue("@p12", family);
com.CommandText = sql;

com.ExecuteNonQuery();

behzadkhatari
شنبه 20 مهر 1392, 13:00 عصر
حتما شرط where اجرا نمیشه که هیچ عملی انجام نمیشه

rayson
شنبه 20 مهر 1392, 13:01 عصر
سلام.
شما یک تست کنید .
بعد از Where مقادیر را وارد کنید جهت جستجو مثل :
bakhshname=N'%" + cmb_bakhshname.text+ "%'
or
bakhshanem='"+cmb_bakhshname.text+"'"

دلتنگ اسمان
شنبه 20 مهر 1392, 14:12 عصر
ظاهرا مشکل در نوع حروف ذخیره شده در جدول می باشد . یعنی انواع 'ی' و انواع 'ک' .
میشه بگید چطوری بصورت حرف فارسی ذخیره و به همان صورت هم بخونم یا چک کنم؟ ممنون

hamid_hr
شنبه 20 مهر 1392, 15:20 عصر
http://barnamenevis.org/showthread.php?320175-%D9%85%D8%B4%DA%A9%D9%84-%D8%A8%D8%A7-%D8%AD%D8%B1%D9%81-quot-%DB%8C-quot-%D8%AF%D8%B1-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88-(-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%A7%DA%A9%D8%B3%D8%B3-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE-%D8%B8%D8%B1%D9%81-DataGrid-)&highlight=sql

aidivandi
یک شنبه 21 مهر 1392, 18:17 عصر
قبل از اجرای دستور
com.ExecuteNonQuery();
این دستورات را اضافه کن
mycon.close();
mycon.open();
منظور از mycon همون connection string یا ادرس دیتابیس است.
موفق باشی

ahmad002
دوشنبه 22 مهر 1392, 02:22 صبح
سلام
1. در قسمت Form_load ابتدا کانکشن خودت رو با دستور NameConnection باز کن!
2. در کد شماره یک شما، باید {} رو بردارید، لازم نیست !
3. کد شماره دوم شما، باید بصورت زیر باشه:
com.Parameters.AddWithValue("@p5",typeFild).values(textbox1text).tostring());
فکر می کنم دستور پارامتر اینطوری باشه، شاید یه تغییر کوچیک داشته باشه، ولی مطمئنم دستور شما اشکال داره!

mortezasar
دوشنبه 22 مهر 1392, 02:56 صبح
سلام دوست عزیز منم این مشکل رو با حروف داشتم شما وقتی که میخوای حروف رو دخیره کنی از Replace استفاده کنی اگرم جست و جو کنی خیلی تو سایت درباره اش بحث شده و زمانی هم که میخوای جست و جو کنی بازم از Replace استفاده مشکلت حل میشه

دلتنگ اسمان
دوشنبه 22 مهر 1392, 12:06 عصر
سلام
1. در قسمت Form_load ابتدا کانکشن خودت رو با دستور NameConnection باز کن!
2. در کد شماره یک شما، باید {} رو بردارید، لازم نیست !
3. کد شماره دوم شما، باید بصورت زیر باشه:
com.Parameters.AddWithValue("@p5",typeFild).values(textbox1text).tostring());
فکر می کنم دستور پارامتر اینطوری باشه، شاید یه تغییر کوچیک داشته باشه، ولی مطمئنم دستور شما اشکال داره!

جوابش رو پیدا کردم. باید قبل از رشته حرف N رو قرار بدم.
حالا این سوال پیش میاد که چرا با وجود تنظیمات دیتابیس(منظورم زبان دیتابیس که Persian_100_CI_AI هستش) فارسی ذخیره نمیشه؟

با ذخیره داده ها بصورت string مشکل ندارم بلکه نوع زبان مشکل دارم از Replace هم استفاده میکنم ولی بازهم بصورت عربی ذخیره میکنه.

ahmad002
دوشنبه 22 مهر 1392, 13:22 عصر
جوابش رو پیدا کردم. باید قبل از رشته حرف N رو قرار بدم.
حالا این سوال پیش میاد که چرا با وجود تنظیمات دیتابیس(منظورم زبان دیتابیس که Persian_100_CI_AI هستش) فارسی ذخیره نمیشه؟

با ذخیره داده ها بصورت string مشکل ندارم بلکه نوع زبان مشکل دارم از Replace هم استفاده میکنم ولی بازهم بصورت عربی ذخیره میکنه.

پایگاه من روی این زبان Persian_100_CI_AS هست و مشکلی هم نداره!