You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现从文本框或SQL表读取文件名打开PDF文件

动态读取文件名打开PDF的C#实现方案

嘿,很高兴你已经搞定了基础的PDF打开功能!下面我给你详细说说怎么从TextBox或者SQL数据表读取文件名来动态打开对应的PDF,直接上干货:

一、从TextBox读取文件名打开PDF

这种场景很直接,核心就是获取TextBox里的文本(可以是完整的文件路径,也可以只是文件名——这时候得确保程序能找到PDF的存放目录),然后把这个路径传给你已有的PDF打开方法就行。

示例代码

假设你已经有一个能正常运行的PDF打开方法OpenPdfFile(string fullFilePath),结合TextBox的实现可以这么写:

private void btnOpenFromTextBox_Click(object sender, EventArgs e)
{
    // 获取TextBox中的文本,先去掉前后空格
    string pdfPath = txtPdfFileName.Text.Trim();

    // 基础校验:文本不能为空,且文件确实存在
    if (string.IsNullOrEmpty(pdfPath))
    {
        MessageBox.Show("请输入PDF文件路径或文件名!");
        return;
    }

    // 如果TextBox里只填了文件名,记得拼接固定的存放目录(按需启用)
    // string basePdfDir = @"C:\YourPdfStorageFolder\";
    // pdfPath = Path.Combine(basePdfDir, pdfPath);

    if (!File.Exists(pdfPath))
    {
        MessageBox.Show("指定的PDF文件不存在,请检查路径!");
        return;
    }

    // 调用你已有的打开PDF方法
    OpenPdfFile(pdfPath);
}

// 假设你已有的PDF打开逻辑(比如用系统默认阅读器打开)
private void OpenPdfFile(string fullFilePath)
{
    try
    {
        Process.Start(new ProcessStartInfo(fullFilePath) { UseShellExecute = true });
    }
    catch (Exception ex)
    {
        MessageBox.Show($"打开PDF失败:{ex.Message}");
    }
}

二、从SQL数据表读取文件名打开PDF

这种情况需要先连接数据库,查询出对应的文件名/路径,再传给打开方法。下面以SQL Server为例,你可以根据自己的数据库类型调整代码:

示例代码

private void btnOpenFromSql_Click(object sender, EventArgs e)
{
    // 替换成你的数据库连接字符串
    string connString = @"Data Source=YourServerName;Initial Catalog=YourDbName;Integrated Security=True";
    // 假设你要根据ID查询PDF记录,这里可以换成你需要的查询条件(比如从界面控件获取)
    int targetRecordId = 1;
    string pdfPath = string.Empty;

    // 使用using自动释放数据库连接资源
    using (SqlConnection conn = new SqlConnection(connString))
    {
        try
        {
            conn.Open();
            // 假设你的表叫PdfFiles,存了Id和FilePath字段(完整路径或文件名)
            string query = "SELECT FilePath FROM PdfFiles WHERE Id = @RecordId";
            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                // 参数化查询,避免SQL注入风险
                cmd.Parameters.AddWithValue("@RecordId", targetRecordId);
                // 执行查询并读取结果
                object result = cmd.ExecuteScalar();
                if (result != null)
                {
                    pdfPath = result.ToString().Trim();
                }
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show($"查询数据库失败:{ex.Message}");
            return;
        }
    }

    // 同样做校验
    if (string.IsNullOrEmpty(pdfPath))
    {
        MessageBox.Show("未查询到对应的PDF文件信息!");
        return;
    }

    // 如果数据库只存了文件名,记得拼接基础目录(按需启用)
    // string basePdfDir = @"C:\YourPdfStorageFolder\";
    // pdfPath = Path.Combine(basePdfDir, pdfPath);

    if (!File.Exists(pdfPath))
    {
        MessageBox.Show("数据库中记录的PDF文件不存在,请检查!");
        return;
    }

    // 调用打开方法
    OpenPdfFile(pdfPath);
}

额外小建议

  • 异常处理:一定要保留try-catch块,处理文件不存在、数据库连接失败、PDF阅读器未安装等异常情况,让程序更稳定。
  • 路径拼接:如果存储的是文件名而非完整路径,务必用Path.Combine()拼接目录,避免因路径分隔符写错导致的错误。
  • 安全问题:从界面获取查询条件时,必须用参数化查询,绝对不能直接拼接SQL语句,防止SQL注入。

内容的提问来源于stack exchange,提问作者Ionel-Aurelian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:10:07