在java中添加一个jpg文件到mysql DB

时间:2014-03-10 17:33:32

标签: java mysql database jdbc

我在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();

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

2 个答案:

答案 0 :(得分:2)

我通常使用以下简单技术来实现它,即

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

答案 1 :(得分:0)

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

对于blob,您可以使用的一件事是二进制流。

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

其中n是预准备语句中的索引,如果绑定每个值,则为3。