【问题标题】:add a jpg file to mysql DB in java在java中将jpg文件添加到mysql DB
【发布时间】:2014-04-13 23:20:55
【问题描述】:

我在 mysql 表中有一个字段,我将数据类型设置为“BLOB”。如何在我的 java 代码中将 jpg 文件插入到我的表中?意思是我如何读取 jpg 文件并在插入表达式中使用它? 我使用按照说明读取 jpg 文件:

File fi = new File("C:\\Users\\Kamyar\\Desktop\\i.jpg");
byte[] fileContent = Files.readAllBytes(fi.toPath());

并使用以下代码插入表格:

Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/Server1", 
"root", "admin");
Statement stmt=con.createStatement();
stmt.execute("Insert into users values( 'Salar5'  ,  '1234'  ,  'describe'  
,'" + **here** + "' ,  88 ,  99  ,  '1/1/93' );");
con.close();

我不知道如何在插入表达式中使用该文件。 谢谢...

【问题讨论】:

    标签: java mysql database jdbc


    【解决方案1】:

    我通常使用以下简单的技术来实现这一点,即,

    • 使用文件上传器将文件上传到固定文件夹 根据需要项目文件夹(如将文件夹定义为图像)
    • 将包含图片名称的图片路径保存到数据库表中 当您上传图像时,而不是实际对象。 (例如:../Project/Images/MyImage.jpg)
    • 那么当你需要显示图像时,你可以通过路径调用它 和文件名如上。

    【讨论】:

      【解决方案2】:

      您可以做的是创建一个 PreparedStatement 而不是 Statement 对象,并且您可以根据需要将所需的值绑定到语句。

      对于 blob,您可以使用二进制流。

      PreparedStatement ps = con.PrepareStatement("INSERT STATEMENT");
      InputStream is = new FileInputStream(fi);
      ps.setBinaryStream(n, is, fileContent.length);
      

      其中 n 是准备好的语句中的索引,如果您绑定每个值,则在您的情况 3 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-16
        • 2013-02-19
        • 1970-01-01
        • 1970-01-01
        • 2022-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多