dashkeyvan
یک شنبه 15 دی 1392, 13:37 عصر
به نام خدا
حتما خیلی ها این مشکل رو داشتن که وقتی برنامتون رو خروجی میگیرین و و نصبش میکنن واگه تو درایو C نصبش کنن ویندوز به طور خودکار اونو فقط خواندنی میکنه و شما نمیتونید رو دیتابیس اطلاعات درج کنین فقط میتونید بخونید.
البته این از ویندوز 7 به این ور اینجوری شده راه درست کردنش اینه که مایکرو سافت یه پوشه اختصاص داده برای دیتا های نرم افزار ها (AppData)شما هم باید در فرم لودتون در لحظه ای هیچ ارتباطی با دیتا بیس ندارین یه پوشه برای خودتون nدر appdata بسازید و دو فایل دیتا بیستون رو اونجا کپی کنید به این شکل
دقت کنید کد هارو جای بزارید که وقتی اجرا میشه قبلش برنامه هیچ ارتباطی با دیتا بیس نداشته باشد.وگرنه ارور میده
تو کپی کردن مسیر ها دقت کنید !!!
اول چک میکنیم ببنیم که فایل وجود نداشته باشه اگه وجود داشت هیچ کاری نکنه و اگه یکیش اتفاقی پاک شده باشه اون یکی رو هم پاک کنه دوباره دوتا فایلو کپی کنه
و اگه جفتش نبود بازم کپی کنه
private void Splash_Screen_Form_Load(object sender, EventArgs e)
{
try
{
if (!File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && !File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
database();
}
if(!File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
File.Delete(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf");
database();
}
if (File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && !File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
File.Delete(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf");
database();
}
}
اینم تابعی کپی کردن دیتا بیس در مسیر دلخواهتون
private void database()
{
//
pathString = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data";
Directory.CreateDirectory(pathString);
//
sourceFile1 = Application.StartupPath + @"\Data\Server_Data\db_mkfeenet.mdf";
destinationFile1 = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf";
File.Copy(sourceFile1, destinationFile1);
//
sourceFile2 = Application.StartupPath + @"\Data\Server_Data\db_mkfeenet_log.ldf";
destinationFile2 = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf";
File.Copy(sourceFile2, destinationFile2);
}
حتما خیلی ها این مشکل رو داشتن که وقتی برنامتون رو خروجی میگیرین و و نصبش میکنن واگه تو درایو C نصبش کنن ویندوز به طور خودکار اونو فقط خواندنی میکنه و شما نمیتونید رو دیتابیس اطلاعات درج کنین فقط میتونید بخونید.
البته این از ویندوز 7 به این ور اینجوری شده راه درست کردنش اینه که مایکرو سافت یه پوشه اختصاص داده برای دیتا های نرم افزار ها (AppData)شما هم باید در فرم لودتون در لحظه ای هیچ ارتباطی با دیتا بیس ندارین یه پوشه برای خودتون nدر appdata بسازید و دو فایل دیتا بیستون رو اونجا کپی کنید به این شکل
دقت کنید کد هارو جای بزارید که وقتی اجرا میشه قبلش برنامه هیچ ارتباطی با دیتا بیس نداشته باشد.وگرنه ارور میده
تو کپی کردن مسیر ها دقت کنید !!!
اول چک میکنیم ببنیم که فایل وجود نداشته باشه اگه وجود داشت هیچ کاری نکنه و اگه یکیش اتفاقی پاک شده باشه اون یکی رو هم پاک کنه دوباره دوتا فایلو کپی کنه
و اگه جفتش نبود بازم کپی کنه
private void Splash_Screen_Form_Load(object sender, EventArgs e)
{
try
{
if (!File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && !File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
database();
}
if(!File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
File.Delete(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf");
database();
}
if (File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf") && !File.Exists(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf"))
{
File.Delete(@"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf");
database();
}
}
اینم تابعی کپی کردن دیتا بیس در مسیر دلخواهتون
private void database()
{
//
pathString = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data";
Directory.CreateDirectory(pathString);
//
sourceFile1 = Application.StartupPath + @"\Data\Server_Data\db_mkfeenet.mdf";
destinationFile1 = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet.mdf";
File.Copy(sourceFile1, destinationFile1);
//
sourceFile2 = Application.StartupPath + @"\Data\Server_Data\db_mkfeenet_log.ldf";
destinationFile2 = @"C:\Users\key1\AppData\Roaming\MKfeenet\Server\Data \db_mkfeenet_log.ldf";
File.Copy(sourceFile2, destinationFile2);
}