在oracle中存储图像的问题(用jdbc)
程序如下:
package Blob;
import java.io.*;
import java.sql.*;
import javax.sql.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class BlobSaver {
private static String dbUserName="yujq";
private static String dbPassword="yujq";
public static void main(String args[]){
BlobSaver blobber=new BlobSaver();
blobber.saveImage(2,"flower2","f:/Blob/test.gif");
}
public void saveImage(int imageID,String description,String filename){
String cmd=
"INSERT INTO TESTBLOB (ImageID,Description,Image) VALUES(?,?,?)";
File imgFile=new File(filename);
try{
// Load the Oracle JDBC driver
DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
// Connect to the database
// You must put a database name after the @ sign in the connection URL.
// You can use either the fully specified SQL*net syntax or a short cut
// syntax as <host>:<port>:<sid>. The example uses the short cut syntax.
String url = "jdbc:oracle:thin:@yjq:1521:YJQDB";
String userName = "yujq";
String password = "yujq";
Connection con =DriverManager.getConnection (url, userName, password);
//Class.forName("oracle.jdbc.driver.OracleDriver");
//oracle.jdbc.pool.OracleDataSource tds=new oracle.jdbc.pool.OracleDataSource();
//tds.setServerName("YJQDB");
//tds.setDatabaseName("TESTBLOB");
//tds.setUser(dbUserName);
//tds.setPassword(dbPassword);
//DataSource ds=tds;
//Connection con=ds.getConnection(dbUserName,dbPassword);
PreparedStatement pstmt=con.prepareStatement(cmd);
pstmt.setInt(1,imageID);
pstmt.setString(2,description);
pstmt.setBinaryStream(3,new FileInputStream(filename),(int)imgFile.length());
pstmt.executeUpdate();
con.close();
}
//catch(ClassNotFoundException e){
// e.printStackTrace();
//}
catch(SQLException e){
e.printStackTrace();
}
catch(FileNotFoundException e){
e.printStackTrace();
}
}
}
可以编译执行,ImageID,Description两个字段数据也可以存储进去,但Image字段的数据存储不进去,会出现一下错误:
java.sql.SQLException:异常:end of TNS data channel......
大侠帮忙,谢谢