当前位置: 技术问答>java相关
大家帮帮忙解决oracle大对象的问题吧。来者有分。
来源: 互联网 发布时间:2015-08-27
本文导语: 这是在网上抄袭Brain(无缺公子)的代码,少作修改,没有结果。不改,也不能运行。请大家指出一下错误吧。 package mshtang.large; import java.sql.*; import java.io.*; import oracle.sql.BLOB; import oracle.jdbc.*; import mshtang.html.Databas...
这是在网上抄袭Brain(无缺公子)的代码,少作修改,没有结果。不改,也不能运行。请大家指出一下错误吧。
package mshtang.large;
import java.sql.*;
import java.io.*;
import oracle.sql.BLOB;
import oracle.jdbc.*;
import mshtang.html.DatabaseForHtml;
public class LargeObjectAction
{
public void orablob()
{
}
public static void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
String dbURL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user = "mshtang";
String passWord = "zixiatang";
Connection conn = DriverManager.getConnection(dbURL, user, passWord);
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt = conn.createStatement();//建立会话
DatabaseForHtml sqlBean = new DatabaseForHtml();
String sqlStr = "";
String fileName = "";
String displayMessage 3D "";
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:\程序员.doc");0D
fileName = file.getName();
InputStream inputStream = new FileInputStream(file);//创建输入流,将外部文件输入到InputStream 中。
sqlStr = "INSERT INTO JPGTEST VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sqlStr);
pstmt.setString(1, fileName);
pstmt.setBinaryStream(2, inputStream, inputStream.available());
pstmt.execute();
pstmt.close();
}
catch(SQLException e)
{
e.printStackTrace();0D
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(2);//获取文件字段。
File binaryFile = new File("D:\test\程序员.doc");
FileOutputStream fileOutStream = new FileOutputStream(binaryFile);//创建文件输出流。
InputStream instream 3D blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。0D
byte[] buffer = new byte[instream.available()];
instream.read(buffer);//将文件流存入变量buffer,以buffer为中转
fileOutStream.write(buffer, 0, buffer.length);//将buffer写入文件输出流。
instream.close();//关闭流
fileOutStream.close();
}
rset.close();
stmt.close();
conn.close();
System.out.print("ok");0D
}
catch(Exception ee)
{
System.out.println(ee.getMessage());
}
}
public static void main(String args[])
{
insertblob();
}
}
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。0D
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
0A
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
package mshtang.large;
import java.sql.*;
import java.io.*;
import oracle.sql.BLOB;
import oracle.jdbc.*;
import mshtang.html.DatabaseForHtml;
public class LargeObjectAction
{
public void orablob()
{
}
public static void insertblob()
{
try
{
//首先是将文件输入到数据库。
Class.forName("oracle.jdbc.driver.OracleDriver");//注册数据库引擎。
String dbURL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String user = "mshtang";
String passWord = "zixiatang";
Connection conn = DriverManager.getConnection(dbURL, user, passWord);
conn.setAutoCommit(false);//关闭自动提交,以提高性能。
Statement stmt = conn.createStatement();//建立会话
DatabaseForHtml sqlBean = new DatabaseForHtml();
String sqlStr = "";
String fileName = "";
String displayMessage 3D "";
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:\程序员.doc");0D
fileName = file.getName();
InputStream inputStream = new FileInputStream(file);//创建输入流,将外部文件输入到InputStream 中。
sqlStr = "INSERT INTO JPGTEST VALUES (?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sqlStr);
pstmt.setString(1, fileName);
pstmt.setBinaryStream(2, inputStream, inputStream.available());
pstmt.execute();
pstmt.close();
}
catch(SQLException e)
{
e.printStackTrace();0D
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(2);//获取文件字段。
File binaryFile = new File("D:\test\程序员.doc");
FileOutputStream fileOutStream = new FileOutputStream(binaryFile);//创建文件输出流。
InputStream instream 3D blob.getBinaryStream();//建立输入流,并将字段comment的值以流的形式,放入instream变量。0D
byte[] buffer = new byte[instream.available()];
instream.read(buffer);//将文件流存入变量buffer,以buffer为中转
fileOutStream.write(buffer, 0, buffer.length);//将buffer写入文件输出流。
instream.close();//关闭流
fileOutStream.close();
}
rset.close();
stmt.close();
conn.close();
System.out.print("ok");0D
}
catch(Exception ee)
{
System.out.println(ee.getMessage());
}
}
public static void main(String args[])
{
insertblob();
}
}
================================================================
CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!
★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。0D
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。
0A
★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。
Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
|
用getObject()方法可以很好地完成。
|
up