PDA

View Full Version : عدم کارکرد تابع Replace



mehdin69
دوشنبه 20 تیر 1390, 02:38 صبح
سلام دوستان
من اول از همه نمی دونم چرا توی دستور زیر توی متغییر Querry 2 تا // میاد و بعد چرا این 2 تا با دستور Rplace به یکی تبدیل نمیشن؟
ممنون میشم کمکم کنید...


DateTime dt = DateTime.Now;
PersianCalendar p = new PersianCalendar();
string year = p.GetYear(dt).ToString();
string mon = p.GetMonth(dt).ToString();
string Day = p.GetDayOfMonth(dt).ToString();
string hours = p.GetHour(dt).ToString();
string min = p.GetMinute(dt).ToString();
string sec = p.GetSecond(dt).ToString();
string milisec = p.GetMilliseconds(dt).ToString();
if (txtBackupAdd.Text.Length > 0)
{


//پشتیبان گیری از بانک اطلاعاتی
System.IO.Directory.CreateDirectory(txtBackupAdd.T ext + @"\SMN");
SqlConnection con = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();


con.Open();

string query = @"BACKUP DATABASE [University] TO DISK = N'{0}\{1}-{2}-{3}----{4}.{5}.{6}.{7}.Bkf'";



query = string.Format(txtBackupAdd.Text,query, year, mon, Day, hours, min, sec, milisec);

query.Replace(@"\","");

cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();

mehdin69
دوشنبه 20 تیر 1390, 02:45 صبح
مثلاً توی دستور بالا l
Query = ""C:\\Users\\Home\\Desktop

نمی دونم چرا داره 2 تا \ میزاره

badguy
دوشنبه 20 تیر 1390, 04:52 صبح
خوب اگه دقت کنی امضا تابع ریپلیس اینه
String String.Replace(...)
که یعنی یه استرینگ بر میگردونه و به استرینگ پاس شده کاری نداره!!
اینطوری کدتو تغییر بده
query = query.Replace(@"\","");

mehdin69
دوشنبه 20 تیر 1390, 08:07 صبح
خب با این شیوه که گفتید مقدار Query مثلاً برای همون مثالی که نو تایپیک قبل زدم میشه
"C:UsersHomeDesktop"

mehdin69
دوشنبه 20 تیر 1390, 11:07 صبح
کسی نمی تونه کمکم کنه؟

badguy
دوشنبه 20 تیر 1390, 11:33 صبح
دقت کن ببین چی نوشتی؟؟؟query = query.Replace(@"\","");
این یعنی هرجا این تابع اسلش "\" دید اونو پاک کنه که شامله "\\" هم میشه !!! که نتیجه ای که میگیری کاملا منطقی هستش
اگه بخوای فقط یه اشلس رو پاک کنه باید اینجوری بنویسش query = query.Replace(@"\\",@"\");

فک کنم (که چی بگم مطمئنم )که کلا نمیدونی این کدا چکار میکنه و همین طوری کپی/پیستش کردی اینجا, دوست عزیز اول فک رو مساله بعد سوال بپرس:چشمک:

دیگه فک کنم ایراد گرفتن برا توابعی از دات نت بخصوص ایجور توابع کار خنده داری باشه[ عدم کارکرد تابع Replace:قهقهه: ]

mehdin69
دوشنبه 20 تیر 1390, 12:05 عصر
من الان توی همه پروژه هام دارم از این تابع استفاده می کنم
خودمم از همین دستوری که شما گفتید داشم استفده می کردم
اما دقیقاً داره توی Query این مقدار رو دوباره میریزه
"C:\\Users\\Home\\Desktop"
چرا اینطوری شده؟
من نمی دونم واقعاً چی بگم....
خودمم به قول شما خندم گرفته:متفکر:

mehdin69
دوشنبه 20 تیر 1390, 12:13 عصر
مثلاً این دستور ساده رو دارم تست میکنم اما هیچ تغییری نمی باز هم توی متغییرم همونی که بوده باقی میمونه


query = query.Replace(@"\\", @"\");;


اگه جاییش اشتباه هست کمکم کنید

راستی من جسارت به دات نت نکردم می دونم خودم یه جایش اشتابه کردم و برا همینم کمک خواستم :لبخند:

badguy
دوشنبه 20 تیر 1390, 12:14 عصر
اول هدف از این کارت رو بگو این هدف از query اینجا چیه؟
که چه لزومی داره از ریپلیس استفاده کنی , چون اگه تو db داری ادرس یه محل رو میذاری [ من کل کدت رو بررسی نکردم, یعنی وقتش رو ندارم!!:لبخندساده: ] که بعدا استفاده کنی خوب همون جوری بذار بمونه دیگه!! الان میرم تست کنم بینم چرا نمیشه [ بلاخره مجبورم کردی ویژوال رو باز کنم:لبخند: ]

mehdin69
دوشنبه 20 تیر 1390, 12:18 عصر
[QUOTE=badguy;1295766]اول هدف از این کارت رو بگو این هدف از query اینجا چیه؟

خب توی سوالم هم گفتم میشه بگید چرا توی آدرسی که داره ذخیره میشه 2 تا \\ ذخیره میشه؟
بعد از اون رفتم سراغ Replace ...
دیدم 2 تا \\ داره میزاره توی آدرسم رفتم از متغییر و این تابع استفاده کردم..
خودمم نمی فهمم چرا اینطوری شده یه همچین دستور ساده ای

مرسی ازتون
لطف کردید:قلب:

badguy
دوشنبه 20 تیر 1390, 12:29 عصر
1) چرا \\ میذاره ؟ خوب برا اینکه از string.Format(...) استفاده کردی اینجا منو شما @ میذاریم ولی این فرمتر همه رو به یه چشم میبینه و هرجا \ ببینه \\ میذاره که کاملا منطقی هست چون اگه اینطوری نباشه برنامه نویس ها کلی به مشکل بر میخورن (خدا پدر این دات نت نویس ها رو رحمت, خیلی گلن :لبخند:)

2) چرا ریپلیس کار نمیکنه ؟ خوببرا اینکه تابع ریپلس اگه بخواد \\ رو تبدیل کنه به \ به نظرت چه اتفاقی میوفته؟؟ انگار اینکه تو کدت نوشتی "fooo\..." [ بدون هیچ @!! ] خوب این خودش ارور هست دیگه برا همین تبدیلش نمیکنه

:: نتیجه اگه میخوای \\ نذاره از String.Format استفاده نکن و همین جوری دستی query رو بنویس!!! [ دیگه فک کنم حل شه ]

badguy
دوشنبه 20 تیر 1390, 12:34 عصر
ولی بنظرم بذار همون جور \\ بمونه چون اون وقت هر وقت که میخواید از db بخونید مجبورید از @ استفاده که خودش اعصاب خورد کنه و از یادت میره!!

mehdin69
دوشنبه 20 تیر 1390, 12:35 عصر
دیدی مشکل داشت :لبخند:
خب با Split بنویسم درست میشه دیگه؟؟؟
جدا کنم و همرو تبدیل کنم به \ ؟؟؟؟

badguy
دوشنبه 20 تیر 1390, 12:41 عصر
این مساله نکته کنکوی داشت :لبخند:

خوب برادر دوست داری کد زیاد بنویسی؟؟:لبخند: همین اینجا string query = @"BACKUP DATABASE [University] TO DISK = N'{0}\{1}-{2}-{3}----{4}.{5}.{6}.{7}.Bkf'"بجای {...} ها متغییر ها رو "+" کن دیگه, ولی اون اسپلیت هم میشه

mehdin69
دوشنبه 20 تیر 1390, 12:45 عصر
من درگیر این بودم کدم رو زیاد تغییر دادم ..
کد زیادی دوست ندارم بنویسم
برای تست بود همه کاری داشتم می کردم ببینم ارور از کجاست
ازت ممنونم