MySQL是一款非常流行的關系型數據庫,很多Java開發者使用它來存儲數據。在Java中,我們需要使用JDBC驅動程序來連接MySQL數據庫。如果我們需要存儲大量圖片到數據庫中,我們可以使用MySQL中的BLOB類型來存儲這些圖片。
存儲圖片到MySQL數據庫中的步驟如下:
//連接數據庫 String url = "jdbc:mysql://localhost:3306/mydb"; String username = "root"; String password = "password"; Connection conn = DriverManager.getConnection(url, username, password); //創建PreparedStatement對象 String sql = "INSERT INTO images (name, image) values (?, ?)"; PreparedStatement ps = conn.prepareStatement(sql); //設置參數 ps.setString(1, "image1"); File imgFile = new File("image1.jpg"); FileInputStream fis = new FileInputStream(imgFile); ps.setBinaryStream(2, fis, imgFile.length()); //執行更新操作 int rowsAffected = ps.executeUpdate(); //關閉連接和流 fis.close(); ps.close(); conn.close();
以上代碼演示了如何將名為“image1.jpg”的圖片文件存儲到“images”表中的“image”列中。在設置二進制流參數之前,我們需要使用“FileInputStream”對象打開圖像文件并獲取其大小。執行更新操作之后,我們需要關閉連接和流。
在Java中讀取從MySQL數據庫中檢索的圖片也很容易。我們可以使用“ResultSet”對象和流來獲取圖像數據。以下是示例代碼:
//連接數據庫 String url = "jdbc:mysql://localhost:3306/mydb"; String username = "root"; String password = "password"; Connection conn = DriverManager.getConnection(url, username, password); //創建Statement對象 Statement stmt = conn.createStatement(); //執行查詢操作 String sql = "SELECT image FROM images WHERE name='image1'"; ResultSet rs = stmt.executeQuery(sql); //獲取圖片數據 if (rs.next()) { InputStream is = rs.getBinaryStream(1); OutputStream os = new FileOutputStream("image1_out.jpg"); byte[] buffer = new byte[1024]; while (is.read(buffer) >0) { os.write(buffer); } is.close(); os.close(); } //關閉連接和流 rs.close(); stmt.close(); conn.close();
以上代碼演示了如何從“images”表中檢索名為“image1”的圖片,并將其寫入到名為“image1_out.jpg”的文件中。在獲取二進制流之后,我們需要使用“FileOutputStream”對象將其寫入磁盤文件。讀取操作完成后,我們需要關閉連接和流。
上一篇mysql 時間不一致
下一篇mysql 時間兩者之間