2017-02-17 9 views
0

Я пытаюсь сделать резервное копирование и восстановление, как начать я пытаюсь получить резервную базу данных так, написать код, как этотКак указать относительный путь базы данных в C# WPF LocalDB

try 
{ 
    string cbdfilename = "c:\\Bbcon.bak"; 
    SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\BbCon.mdf;Integrated Security=True;Connect Timeout=30;"); 
    string sql = "Backup database @DBNAME to Disk = @FILENAME with Format"; 
    SqlConnection.ClearAllPools(); 
    SqlCommand cmd = new SqlCommand(sql, con); 
    cmd.Parameters.AddWithValue("@DBNAME", "BbCon"); 
    cmd.Parameters.AddWithValue("@FILENAME", cbdfilename); 
    con.Open(); 
    try 
    { 
     cmd.ExecuteNonQuery(); 
    } 
    catch(Exception ex) 
    { 
     MessageBox.Show("Backup DB failed" + ex.ToString()); 
    } 
    finally 
    { 
     con.Close(); 
     con.Dispose(); 
    } 
} 
catch (SqlException ex) 
{ 
    MessageBox.Show(ex.Message); 
} 
finally 
{ 
    if (con.State == ConnectionState.Open) 
    { 
     con.Close(); 
    } 
} 

, но когда я запускаю это код я получаю BbCon базы данных ошибок не существует проверить вашу базу данных я не знаю, что это проблема наверняка, но я думаю, что я дал неправильный путь к базе данных я знаю, база данных пути спосы правильно это как

C:\Users\Mahdi Rashidi\AppData\Local\Apps\2.0\NOL11TLW.9XG\CZM702AQ.LPP\basu..tion_939730333fb6fcc8_0001.0002_fd707bbb3c97f8d3 

но этот проект предназначен для некоторых других клиентов, поэтому, когда я устанавливаю это программное обеспечение на другой компьютер, изменить таким образом я получу ошибку, так я прошу всех вас помочь найти мне лучшее решение для создания резервной копии programattically

ответ

0

Я рекомендую вам создать файл app.config и поставить целевой резервный путь там

ИЛИ

то, что я сделал некоторое время назад (для загрузки сборок динамически, но этот кусок кода позволяет получить у местоположения пути на основе сборки, вы работаете) это было что-то вроде:

(Don Не забудьте добавить System.Reflection в список использования)

// get the current assembly from cache 
var currentAssembly = Assembly.GetEntryAssembly(); 

// if current assembly is null 
if (currentAssembly == null) 
{ 
    // get the current assembly from stack trace 
    currentAssembly = new StackTrace().GetFrames().Last().GetMethod().Module.Assembly; 
} 

// get the assemblies path (from returned assembly) 
assembliesPath = Path.GetDirectoryName(currentAssembly.Location); 

С этого момента вы можете связать вас «Путь данных» и сохранить свои данные там.

Надеюсь, это поможет.

+0

это помогло, но теперь я получаю другую ошибку, не могу открыть устройство резервного копирования. Извините, если я раздражаю вас вопросом на вопрос –

+0

второй работал fine.error в комментарии исправлен путем изменения пути к c: \ users \ public –

+0

это прекрасно, этот сайт цели, чтобы помочь друг другу. Опубликуйте полный код для глубокого анализа и еще один вопрос: 1) Не пытаетесь ли вы сделать резервную копию на локальном компьютере (где он запускает приложение)? 2) Работают ли сервер приложений и баз данных на одном компьютере? Спасибо. – rmszc81