如何制作下载按钮以检索sql数据库中的pdf文件?(java swing)

如何制作下载按钮以检索sql数据库中的pdf文件?(java swing),java,mysql,sql,pdf,Java,Mysql,Sql,Pdf,大家好!我正在尝试使用JavaSwing创建一个桌面应用程序,用户可以将pdf文件上传到mysql数据库。我已经在应用程序中完成了上载部分,但是在应用程序中创建下载按钮时遇到了问题。download按钮的功能是检索mysql数据库中的pdf文件,然后将其下载到用户计算机中 以下是我在从中插入pdf文件时发现的内容 上面的链接已经有了获取pdf数据的功能,但我似乎不明白如何在我的下载按钮中实现它 public void upload(Connection conn,String filenam

大家好!我正在尝试使用JavaSwing创建一个桌面应用程序,用户可以将pdf文件上传到mysql数据库。我已经在应用程序中完成了上载部分,但是在应用程序中创建下载按钮时遇到了问题。
download
按钮的功能是检索mysql数据库中的
pdf
文件,然后将其下载到用户计算机中

以下是我在从中插入pdf文件时发现的内容 上面的链接已经有了获取pdf数据的功能,但我似乎不明白如何在我的下载按钮中实现它

  public void upload(Connection conn,String filename) {
        int len;
        String query;
        PreparedStatement pstmt;

        try {
            File file = new File(filename);
            FileInputStream fis = new FileInputStream(file);
            len = (int)file.length();
            query = ("insert into fileStorage VALUES(?,?,?)");
            pstmt = conn.prepareStatement(query);
            pstmt.setString(1,file.getName());
            pstmt.setInt(2, len);

            //method to insert a stream of bytes
            pstmt.setBinaryStream(3, fis, len); 
            pstmt.executeUpdate();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

我遇到的问题是为我的下载按钮创建一个函数。如何从数据库中检索文件,并在单击“下载”按钮后同时下载。

是的,很遗憾,我不知道您的表格式,但是我们应该能够创建一个准备好的语句,从数据库中获取文件的原始字节。下面将从数据库中获取字节数组,然后根据原始字节创建一个新文件(如有必要)

  • 将文件名更改为文件名列的正确名称
  • 将fileContent更改为字节数组的列名称
  • 确保fileContent是varbinary类型
  • 用合法的非空连接引用替换要下载的引用(连接,字符串)中的null
    publicstaticvoidmain(字符串[]args){
    试一试{
    字节[]下载=下载(空,“测试”);
    Path output=Path.get(“my”、“output”、“file.pdf”);
    文件.write(输出、下载、StandardOpenOption.write、StandardOpenOption.CREATE\u NEW);
    }catch(IOException | SQLException e){
    抛出新的RuntimeException(“哦,出了点问题!”,e);
    }
    }
    静态字节[]下载(连接,字符串文件名)引发SQLException{
    try(PreparedStatement语句=connection.prepareStatement(“从文件存储中选择*文件名=?”){
    statement.setString(1,文件名);
    try(ResultSet results=statement.getResultSet()){
    if(results.next()){
    返回结果.getBytes(“文件内容”);
    }
    }
    }
    抛出新的IllegalStateException(“找不到此名称的文件”);
    }
    
    澄清您遇到问题的部分:创建按钮、设置按钮上的操作、从数据库获取和元素、在本地存储中存储内容。我在
    路径和
    标准OpenOption
    中遇到错误,因此我导入了以下
    导入java.nio.file.Files文件
    导入java.nio.file.Path
    导入java.nio.file.path
    导入java.nio.file.StandardOpenOption我是否导入了正确的类?错误消失了,但我仍然无法理解代码是否成功运行,因为我仍然没有在计算机中看到检索文件。顺便说一句,
    Path output=Path.get(“my”,“output”,“file.pdf”)平均值?这些是正确的导入。你做了我指出的必要的改变了吗?如果出现错误,main(字符串[])将抛出异常。在顶层查找文件,而不是在/src/main/resources中。很抱歉,这就是实际发生的情况,我做的第一件事是创建一个类
    download.java
    ,然后将代码粘贴到main中,并将静态代码粘贴到main方法的外部。更改了需要更改的内容,然后在运行代码后,我在控制台中遇到一个错误
    错误:找不到或加载主类应用程序。下载
    ,然后我将代码
    粘贴到gui文件中,而
    中的代码转到
    按钮
    。然后我运行代码,没有得到任何错误,但不知道在哪里查找检索到的文件。我很抱歉,但很遗憾,我无法进一步帮助您。