`

读取多级目录下客户资料到db2数据库中

阅读更多
package write_read;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class ReadFileDB2 {

public ReadFileDB2() {
}

/**
* 读取某个文件夹下的所有文件目录名称,及文件存储到数据库中
* @曲敏杰 2012-07-09
* @throws ClassNotFoundException
* @throws SQLException
*/
public static boolean readfile(String filepath)
throws FileNotFoundException, IOException, ClassNotFoundException,
SQLException {
try {

File file = new File(filepath);
//如果是文件
if (!file.isDirectory()) {
System.out.println("absolutepath=" + file.getAbsolutePath());
} else if (file.isDirectory()) {
//如果是文件夹(目录)
String[] filelist = file.list();
for (int i = 0; i < filelist.length; i++) {
File readfile = new File(filepath + "\\" + filelist[i]);
if (!readfile.isDirectory()) {
//获取文件绝对路径
String pathStr = readfile.getAbsolutePath();
System.out.println("文件绝对路径=" + pathStr);

//获取'\'字符所在位置的下标添加到ArrayList中
ArrayList list = new ArrayList();
for (int j = 0; j < pathStr.length(); j++) {
if (pathStr.charAt(j) == '\\') {
list.add(j+1);
}
}
//获取客户名称开始下标
String khmcstart = list.get(1).toString();
int mcks = Integer.parseInt(khmcstart);
//获取客户名称结束下标后一位
//获取客户账号开始下标
String khmcend = list.get(2).toString();
int mcjs = Integer.parseInt(khmcend);
//获取客户账号结束下标后一位
String khzhstart = list.get(3).toString();
int zhjs = Integer.parseInt(khzhstart);
    //获取客户名称
String khmcStr = pathStr.substring(mcks, mcjs - 1);
System.out.println("客户名称=" + khmcStr);
//获取客户账号
String khzhStr = pathStr.substring(mcjs, zhjs - 1);
System.out.println("客户账号=" + khzhStr);
putimg(khmcStr, khzhStr, pathStr);

} else if (readfile.isDirectory()) {
readfile(filepath + "\\" + filelist[i]);
}
}
}

} catch (FileNotFoundException e) {
System.out.println("readfile()   Exception:" + e.getMessage());
}
return true;
}

/**
* 连接db2(或mysql)数据库
* 把读取的目录及文件存储到数据库中
*/
public static boolean putimg(String khmc, String khzh, String path) {
try {

            //连接mysql数据库
// String url = "jdbc:mysql://localhost/img?useUnicode=true&characterEncoding=gb2312";
// Class.forName("com.mysql.jdbc.Driver");
// String username = "root";
// String password = "root";

//连接DB2数据库
String url = "jdbc:db2://localhost:50000/SJPT";
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
String username="DB_SJPT";
String password="sjpt";
Connection conn = DriverManager.getConnection(url, username,password);
int returnFlag = 0;
String picID = null;
Statement stmt = conn.createStatement();
//生成序号
String xhSql = "SELECT NEXTVAL FOR SEQ_KHXX_XH XH FROM SYSIBM.SYSDUMMY1";
ResultSet rs = stmt.executeQuery(xhSql);

if(rs.next()){
picID = rs.getString("XH");
}
String strSql = "insert   into   t_rp_khzl (id,khmc,khzh) values ('"+picID+"','"+khmc+"','"+khzh+"')";
stmt.execute(strSql);

PreparedStatement pstmt = null;
String updateSql = "";
File files = new File(path);
InputStream photoStream = new FileInputStream(files);
updateSql = "  UPDATE t_rp_khzl SET img=? where id='"+picID+"'";

pstmt = conn.prepareStatement(updateSql);
pstmt.setBinaryStream(1, photoStream, (int) files.length());
returnFlag = pstmt.executeUpdate();

if (returnFlag >= 1) {
System.out.println("图片写入成功!");
} else {
System.out.println("图片写入失败!");
}
//关闭用到的资源
stmt.close();
pstmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
    /**
     * main方法入口,把"E:/客户资料"目录下的文件以二进制的形式出入到数据库中
     */
public static void main(String[] args) throws ClassNotFoundException,
SQLException {
try {
boolean flag = readfile("E:/客户资料");
if(flag==true){
System.out.println("文件写入已完成");
}
} catch (FileNotFoundException ex) {
} catch (IOException ex) {
}

}

}
1
2
分享到:
评论

相关推荐

    浅谈ORACLE GoldenGate在企业数据库中的应用.pdf

    交付进程在目标数据库中读取trail文件,应用到目标数据库;收集进程则在目标端接收和处理数据变更。 数据同步的基本原理是捕获进程解析源数据库的redo log或archivelog,提取DML(数据操纵语言)和DDL(数据定义...

    Oracle GoldenGate异构系统下的实时数据复制解决方案

    Oracle GoldenGate是甲骨文公司推出的一款用于异构环境下的实时数据复制解决方案,它支持多种数据源和目标端数据库系统,能够实现在不同数据库平台间的高效数据同步和复制。以下是该技术方案的一些详细知识点: 1. ...

    GoldenGate安装与配置

    GoldenGate支持多种数据库系统作为源数据库,如Oracle、IBM DB2、Microsoft SQL Server、Sybase ASE、Teradata、MySQL等,同时也可以将数据投递到这些系统以及其他ODBC兼容数据库和ETL工具、JMS平台等。GoldenGate ...

    domino公式大全,中文说明,最快速理解domino公式功能,domino公式中文介绍

    38. **@DB2Schema**: 如果数据库是DB2NSF,返回DB2纲要信息。 39. **@DbColumn(ODBC data source)**: 通过ODBC数据源获取数据库表格的列值。 40. **@DbCommand(Domino data source)**: 访问DOMINO数据库中的视图和...

    goldengate培训课件

    - **捕获**:实时读取源数据库的日志文件,捕捉数据的变化,并支持过滤功能。 - **传输**:将捕获的数据经过压缩和加密后发送至目标数据库。 - **交付**:在目标数据库上执行捕获的数据变化,并将其提交。 - **...

    os390 大型服务器 及 jcl 教程

    3. 数据管理:OS/390提供了高效的数据库管理系统,如DB2,能够处理大规模事务处理和复杂查询。 二、JCL(Job Control Language) 1. JCL简介:JCL是OS/390系统中用于控制作业流程的语言,通过编写JCL脚本,用户...

    IBM as/400 RPG编程

    - `READ`: 从文件中读取记录。 - `WRITE`: 向文件写入记录。 - `IF`: 执行条件判断。 - `DO`: 循环控制结构。 **1.5 ILE RPG/400 程序的例子** - 示例程序通常会包含以下部分: - 规范表定义。 - 主程序逻辑...

Global site tag (gtag.js) - Google Analytics