Java 代码在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

以下代码在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;
        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()
not
getascistream()
来检索数据。而且自Oracle 9i以来,
LONG
数据类型已被弃用。您应该改用
BLOB