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! –