private static void Removetodata2(String path) {
Session session = null;
Connection conn = null;
java.sql.Statement stmt = null;
try {
session = SessionFactory.openSession(EasySQL.ORACLE, "jdbc:oracle:thin:@127.0.0.1:1521:oradb", "data", "data", false, EasySQL.ORACLE_DRIVER);
conn = session.getConnection();
conn = session.getConnection();
boolean defaultCommit = conn.getAutoCommit();
//关闭自动提交
conn.setAutoCommit(false);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
String str = "FileName State"; //日志头
File file = new File(new Date().getTime() + ".txt"); //插入日志
FileInputStream fis = null;
File folderfiles = new File(path);//文件夹路径
BufferedOutputStream out = null;
BufferedInputStream in = null;
File[] files = folderfiles.listFiles(); //获取所有文件
for (int i = 0; i < files.length; i++) {//第一层目录
File sonfiles = files[i]; //获取子文件夹中的子文件
str += "\r\n";
str += "==========================================" + files[i].getName() + ":文件夹:start==================================================";
count = count + 1;
System.out.println(count + "-开始:=============" + sonfiles.getName());
if (sonfiles.length() < 2 * 1024 * 1024) { //小于2M的文件上传
/**
* 之所以用like 是因为路径问题. file_manage 里面的file_name 里有
* “区划/文件名” 所以like 一下就不用考虑"/"的问题.直接把子文件夹里得的数据拿出来
*/
ResultSet rs = stmt
.executeQuery("select bzgl.file_manage.file_remark2 as qhdm ,data.taizhang.wh as tzwh,bzgl.file_manage.file_wenhao as wenhao,bzgl.file_manage.file_name as filename,data.taizhang.smwjmc as smwjmc,data.taizhang.smwjlx as smwjlx,data.taizhang.smwj as smwj from bzgl.file_manage right join data.taizhang on bzgl.file_manage.file_wenhao= data.taizhang.wh where bzgl.file_manage.file_name like'%"
+ sonfiles.getName() + "%' for update");//锁定选择文件
while (rs.next()) {
fis = new FileInputStream(sonfiles);
accesscount = accesscount + 1; //成功插入个数
String filename = rs.getString("filename");
String wh = rs.getString("tzwh");
//更新该文号下面的台账 扫描文件名称和类型.
Query query = session.createQuery("update taizhang set smwjmc='" + filename.substring(0, filename.indexOf(".")) + "',smwjlx='" + filename.substring(filename.indexOf(".") + 1, filename.length()) + "' where wh='" + wh + "'");
query.executeUpdate();//循环记录 记录一次
if(rs.isLast()){
System.out.println(filename + ":更新完毕");
str += "\r\n";
str +="文号:【"+wh+"】 文件名:【"+ filename + "】 [Access] ";
}
//日志文件记录
oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("smwj");
//批量修改
out = new BufferedOutputStream(blob.getBinaryOutputStream());
in = new BufferedInputStream(fis);
int c = 0;
byte buffer[] = new byte[1024];
while ((c = in.read(buffer)) != -1) {
out.write(buffer);
}
}
//成功的台账文件被存放到另一个地方
fis.close();
File folder= new File(path+File.separator+"台账文件");
if(!folder.exists()){
folder.mkdirs();
}
String newname = folder.getPath() +File.separator+sonfiles.getName() ;
File successfile = new File(newname);
sonfiles.renameTo(successfile);
} else {
File folder= new File(path+File.separator+"文件过大");
if(!folder.exists()){
folder.mkdirs();
}
failcont = failcont + 1;
str += "\r\n";
str += sonfiles.getName() + " [Over MaxSize FileSize:" + (sonfiles.length()) / 1048576 + "M]";
}
str += "\r\n";
str += "==========================================" + files[i].getName() + ":文件夹end==================================================";
}
str += "\r\n";
str += "=========Total:" + count + " Access:" + accesscount + " Failed:" + new Integer(count-accesscount).toString() + "=========";
TextFileWriter.write(file, str);
} catch (ClassNotFoundException e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
} catch (Exception e) {
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
try {
conn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
根据提供的部分代码示例,我们可以将其分为两个主要部分:文件保存和文件读取。 ##### 文件保存 文件保存的主要逻辑如下: 1. **获取数据库连接**:使用`ConnectionFactory.getConnection()`方法获得数据库连接。...
BLOB字段主要用于存储大量的二进制数据,如图像、音频、视频或任何其他非文本格式的数据。Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB...
在Java的数据库编程中,...总结来说,无论是使用JDBC还是Hibernate,处理Oracle数据库的BLOB字段都需要了解其特殊性,尤其是BLOB字段的创建和更新过程。正确地操作BLOB字段,能够有效地存储和管理大容量的二进制数据。
在Java应用程序中读取Oracle数据库中的BLOB字段通常涉及到几个步骤:建立数据库连接、执行查询语句、获取结果集并从中提取BLOB数据,最后将这些数据写入到文件中。 ##### 3.1 加载Oracle驱动 在Java程序中使用...
3. **写入文件内容:** 将文件内容写入到Blob字段中。 ##### 示例代码(上传部分): ```java public static void uploadBlob(Connection cn, MmsNewsVO evo) throws Exception { // 获取元素主键 String medpk =...
以上就是Java中Blob字段操作的基本流程,通过这些步骤,你可以成功地将图片或文件保存到数据库中,并能从数据库中读取和恢复这些数据。在实际开发中,根据具体需求,可能还需要处理异常、事务管理和资源关闭等问题,...
本文将深入探讨如何使用Java Database Connectivity (JDBC) API来操作Oracle数据库中的BLOB字段,包括创建表、插入和读取BLOB数据的方法。 #### 创建包含BLOB字段的表 在Oracle数据库中创建一个包含BLOB字段的表...
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
这段代码从数据库中查询BLOB字段,获取InputStream,然后将数据写入一个新的文件。注意,为了提高性能,这里使用了BufferedInputStream和BufferedOutputStream进行缓冲操作。 在实际应用中,确保正确处理异常并关闭...
### JDBC中如何处理Oracle BLOB字段 在Java开发过程中,特别是在使用JDBC(Java Database Connectivity)与Oracle数据库交互时,处理BLOB(Binary Large Object)类型的数据是一项常见的需求。BLOB通常用于存储大量的...
本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...
在这个文件中,我们将主要介绍如何使用存储过程来访问和处理MySQL数据库中的BLOB字段。首先,我们需要创建一个测试表,表名为TestTable,该表包含两个BLOB字段,分别是Image和Other。 然后,我们可以使用存储过程来...
- **设置Blob参数**:使用`setBlob()`方法,传入`FileInputStream`对象和文件大小。 - **执行插入操作**:调用`executeUpdate()`执行SQL,将文件数据存入Blob字段。 5. **步骤二:从MySQL中读出文件并输出**: -...
在IT领域,尤其是在数据库...总之,无论是使用JDBC还是Hibernate,正确处理Oracle中的BLOB字段都是至关重要的,尤其是在处理大量二进制数据的应用场景下。掌握上述流程和技巧,能够有效提升数据操作的效率和安全性。
以下是使用JDBC直接操作Blob字段的步骤: 1. 注册并加载Oracle的JDBC驱动: ```java DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); ``` 2. 创建数据库连接: ```java Connection ...
这个"计算机软件-商业源码-实例123-存取Blob字段.zip"的压缩包文件很可能是包含了一套具体的示例代码,用于演示如何在商业应用中读取和写入Blob字段。 源码软件指的是公开的或者可获得源代码的软件,这使得用户可以...
综上所述,本实例展示了如何在MySQL数据库中创建Blob字段、插入和查询Blob数据。源码中可能包含了类似的实现,通过解压提供的"向数据库插入blob数据实例源码"压缩包,你可以查看并运行完整的Java代码示例。