SQL中.pdf文件路径的System.Diagnostics.Process.Start

时间:2018-11-12 11:57:44

标签: c# file

美好的一天。 在我的C#Windows Forms应用程序中,我想打开.pdf文件。 为此的代码是:

private void btnOpenPdf_Click(object sender, EventArgs e)
{
    try
    {
        System.Diagnostics.Process.Start(lblPdf.Text);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

.pdf文件路径存储在SQL数据库中。 它们以这种方式存储:C:\ Folder1 \ Folder2 \ File Name

在此示例中,这意味着:

lblPdf.Text="C:\Folder1\Folder2\File Name";

*注意:文件名存储时没有文件类型(因此末尾没有.pdf)

当然这是行不通的,所以我在字符串中添加了“ @”和“ .pdf”:

lblTest.Text = ("@" + "\"" + lblPdf.Text + ".pdf" + "\"");

当我通过消息框对此进行测试时:

MessageBox.Show(lblTest);

我得到:

 @"C:\Folder1\Folder2\File Name.pdf"

我遇到的麻烦是这可行:

private void btnOpenPdf_Click(object sender, EventArgs e)
{
    try
    {
        MessageBox.Show(lblTest.Text);            
        System.Diagnostics.Process.Start(@"C:\Folder1\Folder2\File Name.pdf");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

这不起作用:

private void btnOpenPdf_Click(object sender, EventArgs e)
{
    try
    {
        MessageBox.Show(lblTest.Text);            
        System.Diagnostics.Process.Start(lblTest.Text);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

任何人都可以阐明为什么会这样吗?

在第二个示例中收到的错误消息是: “系统找不到指定的文件”

MessageBox.Show在两种情况下都为我提供了正确的语法和文件路径。

谢谢。

3 个答案:

答案 0 :(得分:0)

@Shovers及其可能涉及的其他人

        private void btnOpenPdf_Click(object sender, EventArgs e)
{

        lblTest.Text = ("@" +lblPdf.Text + ".pdf" );
    try
    {
        MessageBox.Show(lblTest.Text);
        System.Diagnostics.Process.Start(lblTest.Text);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

答案 1 :(得分:0)

谢谢大家。

只需添加

 + ".pdf"

标签(lblPdf.Text)就是答案。

private void btnOpenPdf_Click(object sender, EventArgs e)
{
    try
    {
        System.Diagnostics.Process.Start(lblPdf.Text + ".pdf");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

答案 2 :(得分:-2)

我可以给您一些提示:

1个例外

正确的异常处理是我的宠儿,而您却遇到了麻烦。您的代码处理致命异常。永远不要捕捉致命的异常是非常重要的部分。这样做只会为您带来越来越少的可理解的后续错误。这是我经常联系的两个主理:

https://blogs.msdn.microsoft.com/ericlippert/2008/09/10/vexing-exceptions/

https://www.codeproject.com/Articles/9538/Exception-Handling-Best-Practices-in-NET

2。这些PDF如何与数据库一起存储?

PDF是二进制大对象(BLOBS)。那里有两个学校可以存储带有数据库的Blob,并且都影响您必须提供的路径:

  • 您将Blob本身存储在数据库中。通常,这需要设置HTTP处理程序以提供文件供下载/用户使用。在这种情况下,您需要一个URL来访问这些文件
  • 您将文件存储在文件系统中。 DB仅包含路径。在这种情况下,您必须使用URL,共享路径或其他下载这些文件的方式
  • SQL Filestream和其他数据库的等效属性是两者的组合。它的工作原理与第一个类似,但性能接近第二个。
  • 您可能在这里有第4个混蛋版本。或者您只是不了解如何使用数据库中的值。