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.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class ReadFileMysql {
public ReadFileMysql() {
}
/**
* 读取某个文件夹下的所有文件目录名称,及文件存储到数据库中
*
* @曲敏杰 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或List中
// ArrayList list = new ArrayList();
List 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+"'";
String strSql = "insert into t_rp_khzl (khmc,khzh,img) values (?,?,?)";
pstmt = conn.prepareStatement(strSql);
pstmt.setString(1, khmc);
pstmt.setString(2, khzh);
pstmt.setBinaryStream(3, 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) {
}
}
}
分享到:
相关推荐
通过理解备份的重要性,掌握全备与增量备份的区别,以及合理制定备份策略,可以有效保护MySQL数据库中的数据,确保在各种意外情况下数据的完整性和可用性。在实际操作中,应根据业务需求和资源情况,灵活调整备份...
标题中的"PYTHON实现将数据库中多级菜单表读取后输出JSON"指的是使用Python编程语言从数据库中获取具有层级关系的菜单数据,并将其转换成JSON(JavaScript Object Notation)格式。这种格式通常用于数据交换,因为其...
在Java编程环境中,实现MySQL数据库备份通常涉及到操作系统命令行调用和文件操作。这段代码提供了一个名为`MySQLDatabaseBackup`的类,该类包含了将MySQL数据库导出为SQL文件的功能。下面将详细解释这个过程: 1. *...
MySQL数据库间的同步是一种常见需求,特别是在分布式系统或高可用性设置中,确保数据一致性与安全性。本篇文章将详细解析如何在两台MySQL服务器之间实现数据同步。 首先,我们需要在两台服务器上安装并配置MySQL。...
MySQL网络数据库指南主要涵盖的是如何在分布式环境中设计、配置、管理和优化MySQL数据库系统。MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),其在网络上应用广泛,尤其在Web应用程序中。以下将详细介绍...
在构建一个基于MySQL数据库的电子商务网站时,我们面临的核心任务是设计和实现一个高效、稳定且安全的数据存储和管理系统。MySQL作为一个广泛使用的开源关系型数据库管理系统(RDBMS),因其性能强大、易于维护和...
3. 懒更新:在一定条件(如缓存满、下次读取时)下才更新数据库。 六、缓存一致性 保持缓存与数据库的一致性是多级缓存设计的重要考虑因素。常见的一致性模型有强一致性和最终一致性,前者要求每次读取都返回最新...
在C#编程中,根据数据库中的数据动态添加右键菜单是一项常见的需求,特别是在开发桌面应用程序时,这样的功能可以使用户界面更加灵活且具有自定义性。本文将深入探讨如何实现这一功能,结合数据库交互,为用户提供...
在本教程中,我们将探讨如何使用Sharding-JDBC实现MySQL数据库的主从搭建,这是一项重要的数据库高可用性和数据冗余策略。Sharding-JDBC是一个轻量级的Java框架,它使得在不改变原有数据库架构的情况下,实现数据库...
【Python+MySQL实现学生信息查询系统】是一种常见的数据管理应用,它允许用户通过Python程序与MySQL数据库交互,以便查询和管理学生信息。在这个系统中,Python作为后端编程语言,负责处理用户输入、执行SQL查询以及...
通过分析这个ASP多级分类例子,开发者可以学习到如何在服务器端处理复杂的数据库操作,如何构建动态的网页内容,以及如何在ASP中实现用户交互和反馈。对于初学者来说,这是一个很好的实践项目,有助于理解和掌握ASP...
这个名为"MySql主从同步监控程序源码"的项目是用C#语言开发的,旨在帮助管理员实时监控MySQL数据库的主从复制状态,确保数据在主库和从库之间正确、高效地同步。 该程序的核心功能包括: 1. **主从状态监测**:...
MySQL Cluster是MySQL数据库管理系统的一个组成部分,专门设计用于提供高可用性和可扩展性。它通过实现数据的分布式存储和处理,确保即使在部分节点故障的情况下,系统仍能持续运行,从而满足关键业务对数据服务的高...
在读写分离的实现中,通常会有一个主数据库处理所有的写操作,而多个从库负责读取数据。主库会通过二进制日志(binlog)将所有修改同步到从库,实现数据的一致性。为了配置读写分离,你需要设置应用的读连接指向从库...
缓存穿透是指请求的数据既不在缓存中也不在数据库中,可能导致大量请求直接落到数据库上;缓存雪崩是指缓存同时失效,所有请求都直接打到数据库,造成系统崩溃;缓存击穿是指热点数据失效时,大量请求同时穿透缓存...
MySQL数据库的主从同步是一种常见的高可用性和负载均衡策略,尤其在处理大量读写操作的系统中,它能有效地分摊数据库压力,提高系统性能。本文将详细介绍如何配置MySQL数据库的主从同步。 首先,理解MySQL主从同步...
例如,使用PHP可以轻松地从MySQL数据库中获取数据,并将其格式化为HTML页面,展示给用户;同时,也可以接收用户的输入,如表单提交的数据,存储到数据库中,实现数据交互。 总之,“PHP和MySQL WEB开发(第4版)”...
【PHP+MYSQL的WAP整站】是一种基于PHP编程语言和MySQL数据库技术构建的移动互联网网站解决方案。在本文中,我们将深入探讨这个话题,解析其关键组成部分和功能,以及它们如何协同工作为用户提供服务。 首先,PHP...