当前位置: 首页 > 知识库问答 >
问题:

从mysql数据库检索图像时引发异常

贺君浩
2023-03-14

我想以二进制格式存储图像,并以二进制格式检索它,以图像格式显示它。我能够以二进制格式存储该文件,但在检索它时,我得到了错误java空指针异常。请指出错误。代码如下:

import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class InsertImageTest {
int len;
    /**
     * This is used to get the Connection
     * 
     * @return
     */
    public Connection getConnection() {
        Connection connection = null;
        Statement stmt = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/test", "root", "spanwave");
        } catch (Exception e) {
            System.out.println("Error Occured While Getting the Connection: - "
                    + e);
        }
        return connection;
    }

    /**
     * Insert Image
     */
     public Image getImageFile(String fileName) throws Exception {
InsertImageTest ins= new InsertImageTest();
Connection con=ins.getConnection();
Statement stmt=con.createStatement();
          //  String baseName=StoreImage.getBaseName(fileName);
            ResultSet rs=stmt.executeQuery("select * from trn_imgs where img_title='"+"Honda Car"+"'");
            if (!rs.next()) {
              System.out.println("Image:"+"honda car"+" not found");
              return null;
            }
           // int len=rs.getInt(2);

            byte [] b=new byte[len];
            InputStream in = rs.getBinaryStream(3);
            int n=in.read(b);
            System.out.println("n: "+n);
            in.close();
            Image img=Toolkit.getDefaultToolkit().createImage(b);
            System.out.println("Image: "+"honda car"+" retrieved ok, size: "+len);
            return img;
          }
    public void insertImage() throws IOException {
        Connection connection = null;
        PreparedStatement statement = null;
        FileInputStream inputStream = null;

        try {
            File image = new File("calender.png");
            inputStream = new FileInputStream(image);
            len=inputStream.available();
            connection = getConnection();
            statement = connection
                    .prepareStatement("insert into trn_imgs(img_title, img_data) "
                            + "values(?,?)");
            statement.setString(1, "Honda Car");
            statement.setBinaryStream(2, (InputStream) inputStream,
                    (int) (image.length()));

            statement.executeUpdate();
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException: - " + e);
        } catch (SQLException e) {
            System.out.println("SQLException: - " + e);
        } finally {
            try {
                connection.close();
                statement.close();
            } catch (SQLException e) {
                System.out.println("SQLException Finally: - " + e);
            }
        }

    }

    /***
     * Execute Program
     * 
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        InsertImageTest imageTest = new InsertImageTest();
        imageTest.insertImage();
    Image img=  imageTest.getImageFile("calender.png");
    }

}

共有1个答案

谢墨竹
2023-03-14
connection = getConnection();
 Statement stmt = connection.createStatement();
 ResultSet rs=stmt.executeQuery("select * from trn_imgs where img_title='"+"Honda Car"+"'");
 类似资料:
  • 互联网日安! 我正在尝试从mysql数据库检索并显示一个图像到一个图像视图(android)中。图像是blob类型。我有以下php代码从MySQL获取图像。 下面是使用JSON的android代码。 提前感谢您的帮助!

  • 我正在尝试运行检查数据库并获得连接不存在错误!我在MySQL中有一个名为myapp的数据库以及其他数据库。 这是我的settings.py 项目结构: 这就是发生的情况: root @ IP-10-202-209-99:~/Desktop/my site # python manage.py inspectdb-database myapp trace back(最近一次调用last):< br

  • Iam是JPA的新手,尝试创建EJB 3.0+JPA(hibernate)应用程序。当iam将数据持久化到数据库中时,出现以下异常。 sessionBean方法: 客户类(实体类)

  • 是否正确?现在,当我尝试从数据库中检索blob数据时,它每次都会更改,为什么?那么如何检索此图像呢?以下是我尝试过的代码: 我没有看到任何图像。为什么?请帮忙。谢谢

  • 问题内容: 如何在MySQL中插入图像,然后使用PHP检索图像? 我在这两个领域的经验都很有限,我可以使用一些代码让我着手解决这个问题。 问题答案: 首先,您创建一个MySQL表来存储图像,例如: 然后,您可以将图像写入数据库,如下所示: 您可以使用以下方法在网页中显示数据库中的图像: