PDA

View Full Version : سوال: جایگزین کردن بین دو رشته



YasserDivaR
یک شنبه 15 مرداد 1396, 20:07 عصر
سلام بر اساتید محترم

ببینید من یه برنامه نوشتم که میاد اسکریپت دیتابیس رو توی سی شارپ ران میکنه و دیتابیس ساخته میشه تا اینجاش و مشکلی ندارم اما مشکلی که دارم اینه که میخوام کاربر محل ذخیره دیتابیس رو توی اسکریپت تغییر بده منتها با کد
این کد اسکریپت هست که قراره تغییر کنه

( NAME = N'db_test_60', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_6 0.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'db_test_60_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\db_test_6 0_log.ldf' , SIZE = 4672KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)



با این خط کد تونستم آدرس محل رو تغییر بدم



Regex x = new Regex("(FILENAME = N')(.*?)(' , SIZE =)");
string s = richTextBox1.Text;
string repl = textBox1.Text;
string Result = x.Replace(s, "$1" + repl + "$3");
richTextBox2.Text = Result;


ریچ تکست شامل کلیه متن های اسکریپته و تکست باکس هم آدرسی که کاربر دستی وارد میکنه

اما مشکل من اینه که اسم دیتابیس و اسم فایل لاگ رو نمیتونم کاری کنم یعنی با کد بالا اسم فایل لاگ و دیتابیس جایگزین ادرسی میشه که کاربر وارد کرده چطوری میتونم کاری کنم که اسم دیتابیس و فایل لاگ تغییر نکنه و ثابت بمونه و فقط آدرس پوشه عوض بشه

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA

فرض رو هم براین بزاریم که ممکنه آدرس ها یکسان نباشه از من اینه پیشفرض یه کاربر دیگه میاد دیتابیس رو تو یه درایو دیگه میسازه چطوری میشه چنین کارب کرد

samiasoft
یک شنبه 15 مرداد 1396, 22:36 عصر
سلام

نمیدونم منظورتو متوجه شدم یا نه...یه کدی برات نوشتم اینو ببین فک کنم همون چیزی که میخوای...از ضممیه دان کن

اون log که فایل ldf هست رو نزاری تو اسکریپت بهتره چون خودش همینطوری هم ساخته میشه کنار دیتابیس

Mahmoud.Afrad
یک شنبه 15 مرداد 1396, 23:58 عصر
میتونید اسکریپت را با مقادیری که خودتون تعیین میکنید به صورت خام به برنامه اضافه کنید.
مثلا
( NAME = N'db_Primary_Name', FILENAME = N'Primary_File_Path.MDF' -- , ...
LOG ON
( NAME = N'db_Log_Name', FILENAME = N'Log_File_Path.ldf' --, ...
در زمان اجرا با Replace میتونید مسیرها و نامها رو جایگذین کنید.

اگر هم میخواهید اسکریپت اجرا شده رو میتونید در جایی به صورت مجزا از اسکریپت خام ذخیره کنید.