1
我想從數據庫中獲取每張圖片,並將其放入ArrayList中,然後將其打印出來。但是我得到了一個我不明白的結果。如何從java數據庫獲取圖像與數據庫
結果:
Q1:爲什麼我得到這樣的結果?
Q2:如果我然後想用ImageIcon顯示圖片,是ArrayList他們的路要走嗎?
這裏是我的代碼:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.*;
public class ImageData {
public static void main(String[] args){
Connection con = null;
Statement st = null;
ResultSet rs = null;
//databasens lokalisation, namn, användare & lösenord
String url = "jdbc:mysql://localhost:3306/";
String dbname = "101207-facemash";
String user = "root";
String pwd = "root";
List<String> img = new ArrayList<String>();
try{
// Vi upprätta en anslutning till databasen med hjälp av anslutningen URL, dbnamnet, användarnamn och lösenord.
con = DriverManager.getConnection(url + dbname, user, pwd);
st = con.createStatement();
rs = st.executeQuery("SELECT filename FROM images");
while(rs.next()){
img.add(rs.getString("filename"));
System.out.println(img);
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(ImageData.class.getName());
lgr.log(Level.SEVERE, ex.getMessage(), ex);
} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (SQLException ex) {
Logger lgr = Logger.getLogger(ImageData.class.getName());
lgr.log(Level.WARNING, ex.getMessage(), ex);
}
}
}
}
泰德:你能提供一些代碼示例,你知道它爲什麼輸出相同的文件名dussin時間嗎? – SHUMAcupcake
@SHUMAcupcake - 從您的代碼看,每行輸出對應於數據庫的一行。這表明存儲在表中的數據不是您所期望的 - 表中的每一行都有整個圖像文件名稱的數組,逗號分隔並括在括號內。 –
@SHUMAcupcake,表格模式是什麼?像泰德霍普說,似乎你有一個varchar文件列而不是像你期望的blob。即使列「文件名」的名稱表明它不是blob! –