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
相关产品推荐
相关产品推荐

