Java 代码在Oracle11g中运行良好,但在10g中检索图像时不起作用,即显示垃圾图像
以下代码在Oracle11g中运行良好,但在10g中检索图像时不起作用,即显示垃圾图像Java 代码在Oracle11g中运行良好,但在10g中检索图像时不起作用,即显示垃圾图像,java,oracle,Java,Oracle,以下代码在Oracle11g中运行良好,但在10g中检索图像时不起作用,即显示垃圾图像 public void getImage() { String Name = null; String FullName = null; InputStream gifdata = null; try { String Query = "select Name,Image from ImageInsert1 where id=" + ID; S
public void getImage() {
String Name = null;
String FullName = null;
InputStream gifdata = null;
try {
String Query = "select Name,Image from ImageInsert1 where id=" + ID;
System.out.println("write from data base1 ");
PreparedStatement pst = conn.prepareStatement(Query);
System.out.println("write from data base:2 ");
System.out.println("write from data base:3 ");
ResultSet result = pst.executeQuery();
System.out.println("write from data base:4 ");
if (result.next()) {
Name = result.getString(1);
System.out.println("write from data base:5 ");
FullName = "D:\\Name" + ID + ".gif";
gifdata = result.getAsciiStream(2);
File giffile = new File(FullName);
FileOutputStream file = new FileOutputStream(giffile);
int chunk = 0;
while ((chunk = gifdata.read()) != -1) {
file.write(chunk);
}
file.flush();
file.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
认真学习使用空格键。如果没有正确缩进,则很难读取代码。我使用了long数据类型来保存图像“long data type”或CLOB(或VARCHAR2/BLOB)?对于初学者来说,
giffile
与file
不同。我希望您没有在StackOverflow编辑器中重新键入代码。如果是,请返回并复制/粘贴实际代码。第二,你真的想一次复制一个字节的文件吗?图像是二进制数据。因此,您需要使用getBinaryStream()
notgetascistream()
来检索数据。而且自Oracle 9i以来,LONG
数据类型已被弃用。您应该改用BLOB
。