Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ByteArrayInputStream()显示空值_Java_Mysql_Bufferedimage - Fatal编程技术网

Java ByteArrayInputStream()显示空值

Java ByteArrayInputStream()显示空值,java,mysql,bufferedimage,Java,Mysql,Bufferedimage,我正在尝试以blob数据格式加载MySQL数据库中的图像([B@e96bf)但我无法将其加载到如下所示的JLabel。它显示ByteArrayInputStream为空 byte[] bytesl = null; ResultSet rs = DB.DB.search("select image from imageio where id = '2'"); while (rs.next()) { bytesl = rs.getBytes(1); } Buf

我正在尝试以blob数据格式加载MySQL数据库中的图像(
[B@e96bf
)但我无法将其加载到如下所示的JLabel。它显示
ByteArrayInputStream
为空

byte[] bytesl = null;

ResultSet rs = DB.DB.search("select image from imageio where id = '2'");
while (rs.next()) {
    bytesl = rs.getBytes(1);               
}
BufferedImage imag = ImageIO.read(new ByteArrayInputStream(bytesl));

Image img = imag;

img = img.getScaledInstance(jLabel1.getWidth(), jLabel1.getHeight(),
                            Image.SCALE_SMOOTH);
jLabel2.setIcon(new ImageIcon(img));

我认为您的代码不会进入while循环,因为没有此类查询的记录。最可能的问题是“2左右的符号”。通常id是一个数字,但在您的请求中,您似乎将其与字符串进行比较。请尝试删除2左右的撇号

fileContent = Files.readAllBytes(f2.toPath());
DB.DB.statement("insert into imageio (image) values ('" + fileContent + "')");
您刚刚插入了字符串
[B@96bf
导入数据库。
ImageIO
无法将其转换为图像,因此返回null


您至少应该使用
PreparedStatement
并将数据作为参数提供。您确实应该在此处使用Blob和输入流。

什么是
DB
?一个好的开始是在while循环中放入print语句(或调试代码)看看它是否会进入那里。不应该影响你的结果,但是如果while循环最多只能执行一次(我假设…),你可能不应该使用while循环(更好的主意是使用if语句)。你验证了列和行是否有数据吗?我用sout。。。[B@e96bf这是我为bytesl买的东西我需要解码吗?
[B@e96bf
很可能不是实际存储在字节数组中的内容(如果是,这是个问题),这正是Java在尝试输出数组时打印出来的内容。请尝试
数组。toString
新字符串(字节)
在将其传递给
println
之前。此外,您可能应该向我们展示您将数据写入表中
image
列的方式,以防出现问题。如果可能,您应该始终尝试向我们提供完整(但简短)的数据我们可以立即运行代码,以查看与您看到的结果相同的结果。文件f=jFileChooser1.getSelectedFile();字符串路径=f.getAbsolutePath();System.out.println(path);newpath=path.replace(“\\”,“/”);文件f2=newfile(newpath);图像img=ImageIO.read(f2);img=img.getScaleInstance(jLabel1.getWidth(),jLabel1.getHeight(),Image.SCALE_SMOOTH);jLabel1.setIcon(新图像图标(img));fileContent=Files.readAllBytes(f2.toPath());DB.DB.语句(“插入到图像IO(图像)值(“+fileContent+”));这只是mysql查询…发现的问题是ImageIO.read(new ByteArrayInputStream(bytesl))的值为空无mate数据库中没有问题..共有2列.id(int),image(blob)确切地说,id是int,但您要传递一个字符串。请尝试查询:从imageio中选择图像,其中id=2这是一个java程序…因此我将此查询作为字符串语句传递:)