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) {
}
}
}
分享到:
相关推荐
Excel读取数据导入DB2数据库需要使用POI库读取Excel文件,并使用JDBC API连接DB2数据库,并执行SQL语句将Excel数据导入到数据库中。同时,我们还需要考虑实现一个通用转换类,以便于提高代码的灵活性和可维护性。
- **查询数据库目录**:`db2listdbdirectory` 命令用于列出当前系统中所有可用的DB2数据库实例。 - **查询表**: - `db2listtablesǰû` 用于列出当前用户下所有表。 - `db2listtablesforallб` 列出数据库中...
本文将详细介绍如何利用Java语言结合Apache POI库来实现从Excel文件中读取数据,并通过Java DB2 JDBC驱动将其导入DB2数据库的过程。 #### 二、准备工作 ##### 2.1 安装必要的软件和库 1. **Java环境**:确保系统...
在DB2数据库中,Bufferpool(缓冲池)的设置对整个系统的性能有着重要的影响。合理的Bufferpool配置能够显著提升数据访问速度,减少I/O操作次数。下面将详细介绍如何进行Bufferpool的优化。 #### 1.1 Bufferpool的...
有时,我们可能需要在应用程序启动时预先填充一些数据,这时可以将预置的数据库文件放入`assets`目录下,然后在程序运行时读取并加载。本文将详细介绍如何在Android中从`assets`目录读取数据库,并进行相关操作。 ...
2. 数据库一致性恢复:当单节点数据库在使用中因电源故障而中断时,一旦电源恢复,需要使用一种方法将数据库恢复到一致状态。题库中的正确选项 A.Crash recovery 指出,崩溃恢复(Crash recovery)是数据库在电源...
在.NET环境中连接到DB2数据库是一项常见的任务,尤其对于开发跨平台的企业级应用程序而言。本文将详细介绍如何使用.NET Framework和IBM Data Provider for .NET来实现这一目标,以及相关的编程概念和示例。 首先,...
2. **恢复到兼容模式**:在某些版本的DB2中,过期后数据库可能会自动切换到一个“受限”或“只读”模式,允许用户读取已有数据,但不能执行写操作。这种情况下,需要尽快更新许可证以恢复正常服务。 3. **备份与...
通过指定文件名,DB2会读取并顺序执行文件中的所有SQL语句,适用于复杂的数据操作和批量处理任务。 #### 15. 页面转换 虽然文件中没有详细描述,但页面转换通常指的是数据格式或编码的转换。在跨平台或跨语言环境...
该命令用于列出数据库目录中的所有数据库。 #### 二十八、列出表空间 **命令:** ``` LIST TABLESPACES ``` **解释:** 该命令用于列出当前数据库中的所有表空间。 #### 二十九、列出表空间容器 **命令:** ``` ...
《牛新庄-db2数据库性能调整优化》这本书深入探讨了DB2数据库的性能优化技术,是DB2数据库管理员和开发人员的重要参考资料。DB2作为IBM公司的一款企业级关系型数据库管理系统,广泛应用于金融、电信、制造等多个行业...
DB2数据库驱动是IBM公司开发的一款用于连接到DB2关系型数据库管理系统的Java数据库连接(JDBC)驱动程序。在Java应用程序中,DB2数据库驱动扮演着至关重要的角色,它使得Java程序能够通过标准的JDBC接口与DB2数据库...
在.NET环境中,如果要进行DB2数据库的操作,通常需要借助于特定的数据库连接组件,例如IBM.Data.DB2.DLL。这个DLL文件是IBM为.NET开发者提供的DB2数据库连接驱动,它允许C#等.NET语言与DB2数据库进行交互。 C#是一...
DB2数据库协议解析-DRDA V5.3 在数据库领域,分布式关系数据库访问架构(Distributed Relational Database Architecture,简称DRDA)是一种标准通信协议,由IBM开发,用于连接不同系统上的数据库管理系统(DBMS)。...
此外,DB2的分区功能允许将大型数据库分散到多个物理设备上,提高查询效率。内存管理和缓冲池也是提升性能的关键因素。 对于IBM的DB2资格认证,通常包括多个级别,例如Foundation、Associate、Professional等。这些...
这个驱动程序提供了必要的功能,使得基于ODBC的应用程序能够连接到DB2服务器,执行SQL查询,读取和写入数据。通常,IBM会提供一个客户端驱动包,如"clidriver(ibm-db2)",其中包含了所有必要的组件。 1. 安装过程:...
在Java环境中,为了与DB2数据库进行交互,通常需要使用特定的Java驱动程序,这些驱动程序通常被打包成JAR(Java Archive)文件。在提供的描述中提到了四个重要的JAR文件,它们分别是: 1. **db2jcc.jar**:这是IBM ...
DB2数据库驱动jar包是IBM公司为连接到其DB2关系型数据库管理系统(RDBMS)提供的Java类库。这些jar文件包含了与Java应用程序交互所需的接口和类,使得开发者可以通过Java编程语言来操作DB2数据库。在Java环境中,如...