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



您好。在我的C#窗体应用程序中,我想打开.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:Folder1Folder2File Name";

*注意:文件名存储时没有文件类型(所以最后没有.pdf(

当然这不起作用,所以我在字符串中添加了"@"one_answers".pdf":

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

当我用消息框测试时:

MessageBox.Show(lblTest);

我得到:

@"C:Folder1Folder2File Name.pdf"

我遇到的问题是,这是有效的:

private void btnOpenPdf_Click(object sender, EventArgs e)
{
try
{
MessageBox.Show(lblTest.Text);            
System.Diagnostics.Process.Start(@"C:Folder1Folder2File 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都为我提供了正确的语法和文件路径。

谢谢。

@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);
}
}

谢谢大家。

只是添加

+ ".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);
}
}

我可以给你一些提示:

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(。有两种学派都很难用DB存储Blob,它们都会影响你必须给出的路径:

  • 您将blob本身存储在DB中。通常,这需要设置一个HTTP处理程序来提供文件供下载/用户使用。在这种情况下,您需要一个URL来访问这些文件
  • 您将文件存储在文件系统中。DB只包含路径。在这种情况下,你必须使用URL、共享路径或其他任何方式下载这些文件
  • SQL文件流和其他数据库中的等效属性有点像两者的结合。它的工作原理基本上与第一个类似,性能更接近第二个
  • 你可能在这里有一些第四个版本。或者您根本不知道如何使用数据库中的值

相关内容

  • 没有找到相关文章

最新更新