c# wpf localdb如何指向数据库的相对路径

How to point to the relative path of database 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 不存在,请检查你的数据库,我不确定是什么问题,但我想我给了错误的数据库路径我知道路径od 数据库正确它就像

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

但是这个项目是为其他一些客户设计的,所以当我将这个软件安装到其他计算机时,路径会发生变化,所以我会得到一个错误,所以我恳求大家帮我找到一个更好的解决方案,以编程方式创建备份

我建议您创建一个 app.config 文件并将备份目标路径放在那里

我前段时间所做的(动态加载程序集,但这段代码允许您根据您所在的程序集检索路径位置 运行)它是这样的:

(不要忘记将 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);

从那时起,您现在可以连接 "Data Path" 并在那里保存您的数据。

希望对您有所帮助。