public int executeUpdate() throws SQLException;
public boolean WriteInMySql(String sql,String filename);一个是int,一个是boolean,java不允许隐含的从int转换到boolean,所以要么改变你函数的返回值的类型,要么根据int值计算出boolean再返回
public boolean WriteInMySql(String sql,String filename);一个是int,一个是boolean,java不允许隐含的从int转换到boolean,所以要么改变你函数的返回值的类型,要么根据int值计算出boolean再返回
public static void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
String dbURL = "jdbc:oracle:thin:@192.168.0.74:1521:orcl";
String user = "pm";
String passWord = "pm";
Connection conn = DriverManager.getConnection(dbURL, user, passWord);
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt = conn.createStatement();//建立会话
DatabaseForHtml sqlBean = new DatabaseForHtml();
String sqlStr = "";
String fileName = "";
String displayMessage = "";
try
{
sqlStr = "select table_name from user_tables where table_name='JPGTEST'";
if(!sqlBean.hasResult(conn, sqlStr))
{
displayMessage = (stmt.executeUpdate("create table JPGTEST (fname varchar2(600), bx blob)") == 0) ? "table created successfuly" : "table created failure";
System.out.println(displayMessage);
}
File file = new File("C:\\02.jpg");
fileName = file.getName();
FileInputStream inStream = new FileInputStream(file);//创建输入流,将外部文件输入到InputStream 中。
byte[] buffer = new byte[inStream.available()];
sqlStr = "INSERT INTO JPGTEST VALUES ('" + fileName + "', empty_blob())";
stmt.execute(sqlStr);
ResultSet rs = stmt.executeQuery("select bx from JPGTEST where fname='" + fileName + "' for update");
if(rs.next())
{
BLOB blob = ((OracleResultSet)rs).getBLOB("bx");
OutputStream outStream = blob.getBinaryOutputStream();
inStream.read(buffer);
outStream.write(buffer);
outStream.flush();
stmt.execute("commit");
outStream.close();
System.out.println("文件成功写入数据库");
}
inStream.close();
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
System.out.println("数据库异常:" + e.getMessage());
}
//以下是从库中读取文件。
sqlStr = "SELECT * from JPGTEST where fname='" + fileName + "'";
System.out.println(sqlStr);
ResultSet rset = stmt.executeQuery(sqlStr);
if(rset.next())
{
BLOB blob = ((OracleResultSet)rset).getBLOB("bx");//获取文件字段。
InputStream inStream = blob.getBinaryStream();//建立输入流,并将字段bx的值以流的形式,放入inStream变量。
File binaryFile = new File("D:\\test\\" + fileName);
FileOutputStream fileOutStream = new FileOutputStream(binaryFile);//创建文件输出流。
int by = inStream.read();
while(by != -1)
{
fileOutStream.write(by);
by = inStream.read();
}
fileOutStream.flush();
System.out.println("文件从数据库中成功读出");
inStream.close();//关闭流
fileOutStream.close();
}
rset.close();
stmt.close();
conn.close();
}
catch(Exception ee)
{
System.out.println(ee.getMessage());
}
}
public class upload {
public static void main(String[] args)
{
}
public upload()
{
String sDBDriver ="oracle.jdbc.driver.OracleDriver";
try {
Class.forName(sDBDriver);
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
Connection conn=DriverManager.getConnection("jdbc:oracle:oci8:@BTEST.BEAUTYBEARD","SQA","sqa");
}
catch(java.lang.ClassNotFoundException e)
{
System.err.println("faq(): " + e.getMessage());
}
catch(Exception e)
{
System.out.println(e);
}
try
{
int bytes=0;
Statement stmt=conn.createStatement();
String displayMessage="";
File file=new File("E:\\1.doc");
FileInputStream inStream=new FileInputStream(file);
byte[] buffer=new byte[inStream.available()];
stmt.execute("insert into application values (empty_blob())");
ResultSet rs=stmt.executeQuery("select ATT from application for update");
if (rs.next())
{
BLOB blob=((OracleResultSet)rs).getBLOB("ATT");
OutputStream outStream=blob.getBinaryOutputStream();
inStream.read(buffer);
outStream.write(buffer);
outStream.flush();
stmt.execute("commit");
outStream.close();
System.out.print("successful");
}
inStream.close();
rs.close();
}
catch(IOException e)
{
e.printStackTrace();
}
catch(SQLException e)
{
e.printStackTrace();
System.out.print(e.getMessage());
}
}
private Connection conn;
}
创建连接的部分我就省掉了
PreparedStatement pstmt = conn.prepareStatement("update tabelname set blobcolumn = ? ");
File file=new File(outFile);
InputStream inStream=new FileInputStream(file);
pstmt.setBinaryStream(1,inStream,(int)file.length());
pstmt.executeUpdate();