Java 如何从数据库中检索BLOB图像以及数据类型?

Java 如何从数据库中检索BLOB图像以及数据类型?,java,blob,Java,Blob,我有以下结构。我将一些表连接在一起,以从我的SQL数据库中获得一个结果。我有一个列,它实际上存储了一个BLOB图像。我想知道如何在一个变量中检索这些信息,然后使用该变量在图形用户界面(如swing window)中加载此图像 下面是我如何读取数据库其他字符串字段的代码 ResultSet result = statement.executeQuery(SQLQuery); ResultSetMetaData metaData = rs.getMetaData(); while (result.

我有以下结构。我将一些表连接在一起,以从我的SQL数据库中获得一个结果。我有一个列,它实际上存储了一个BLOB图像。我想知道如何在一个变量中检索这些信息,然后使用该变量在图形用户界面(如swing window)中加载此图像

下面是我如何读取数据库其他字符串字段的代码

ResultSet result = statement.executeQuery(SQLQuery);
ResultSetMetaData metaData = rs.getMetaData();

while (result.next())
{

  for (int i = 1; i <= columnsNumber; i++)
  {
         String AttributeName = metaData.getColumnName(i);
         String AttributeValue = result.getString(i);

         if(AttributeName == "UserName")
         {
             String userName = AttributeValue;
         }
         if(AttributeName == "UserImage")
         {
             //code here to get the BLOB user Image.?
         }
   }
}
ResultSet result=statement.executeQuery(SQLQuery);
ResultSetMetaData元数据=rs.getMetaData();
while(result.next())
{

对于(inti=1;i,您可以将您的循环和我的循环集成起来:

 while (resultSet.next()) {
  // String name = resultSet.getString(1);
  // String description = resultSet.getString(2);
  File image = new File("your path");
  FileOutputStream fos = new FileOutputStream(image);
  byte[] buffer = new byte[1];

  InputStream is = resultSet.getBinaryStream(3);
  while (is.read(buffer) > 0) {
    fos.write(buffer);
  }
  fos.close();
}

当然,请记住正确修改路径和InputStream is=resultSet.getBinaryStream(3);行。祝你好运!

谢谢!我会尝试一下。是否有机会使用图像在GUI中显示它,而不实际将图片写入文件系统?是的,使用ByteArrayOutputStream而不是FileOutputStream。我要更新我的答案还是你要管理?这个ByteArrayOutputStream将用于将其写入ImageIcon对象JEC或者怎么做?你可以用这个流来构造它:newImageIcon(bos.toByteArray());当然可以。如果你还有任何问题,请随时提问。