JDBC实现纵向导出数据库数据
2012-04-10 23:40
316 查看
使用到的技术点:
1.Java写文件;
2.熟悉JDBC API;
3.Java集合ArrayList的使用;
4.Java字符串截取;
本代码仅供测试,如要使用,需自行增加数据库列类型定义和判定逻辑。
DBConnectMySQL.java
ExportLongitudinalData.java
1.Java写文件;
2.熟悉JDBC API;
3.Java集合ArrayList的使用;
4.Java字符串截取;
本代码仅供测试,如要使用,需自行增加数据库列类型定义和判定逻辑。
DBConnectMySQL.java
package com.manny.util.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBConnectMySQL { private static String userName = "root"; private static String password = "123456"; private static String driver = "com.mysql.jdbc.Driver"; public Connection getConnection() { Connection conn = null; try { Class.forName(driver); String url = "jdbc:mysql://localhost:3306/life"; conn = DriverManager.getConnection(url, userName, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }
ExportLongitudinalData.java
package com.manny.util; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.manny.db.common.DataTypeConstant; import com.manny.util.db.DBConnectMySQL; public class ExportLongitudinalData { public static void main(String[] args) { DBConnectMySQL cm = new DBConnectMySQL(); Connection conn = null; Statement sts = null; ResultSet rs = null; try { conn = cm.getConnection(); sts = conn.createStatement(); String sql = "select * from life.pictures"; rs = sts.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int colCount = rsmd.getColumnCount(); System.out.println("colCount=" + colCount); List colNameAndDatas = new ArrayList(); for (int i = 1; i <= colCount; i++) { String colTypeName = rsmd.getColumnTypeName(i); String colClassName = rsmd.getColumnClassName(i); String colName = rsmd.getColumnName(i); colNameAndDatas.add(colName); } while (rs.next()) { for (int i = 1; i <= colCount; i++) { String colTypeName = rsmd.getColumnTypeName(i); String colData = getColumnData(rs, i, colTypeName); String currentData = (String) colNameAndDatas.get(i - 1); colNameAndDatas.set(i - 1, currentData + "," + colData); } } String fileName = getTableNameFromSQL(sql, "CSV"); outputToFile(colNameAndDatas, fileName); } catch (SQLException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } finally { try { if (rs != null && !rs.isClosed()) rs.close(); if (sts != null && !sts.isClosed()) sts.close(); if (conn != null && !conn.isClosed()) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } private static String getColumnData(ResultSet rs, int columnIndex, String colTypeName) { try { if (DataTypeConstant.TYPE_VARCHAR.equals(colTypeName)) { return rs.getString(columnIndex); } if (DataTypeConstant.TYPE_CHAR.equals(colTypeName)) { return rs.getString(columnIndex); } } catch (SQLException e) { e.printStackTrace(); } return ""; } private static void outputToFile(List rowDataList, String fileName) { try { String filePath = "D:\\temp\\"; File dir = new File(filePath); if (!dir.exists()) { dir.mkdirs(); } File exportFile = new File(filePath + File.separator + fileName); if (!exportFile.exists()) { exportFile.createNewFile(); } FileWriter fw = new FileWriter(exportFile); for (Iterator iterator = rowDataList.iterator(); iterator.hasNext();) { String rowData = (String) iterator.next(); System.out.println(rowData); fw.write(rowData + "\n"); } fw.flush(); fw.close(); } catch (IOException e) { e.printStackTrace(); } } private static String getTableNameFromSQL(String sql, String fileExt) { String fileName = ""; if (sql != null) { sql = sql.toUpperCase().trim(); int whInd = sql.indexOf(" WHERE "); int frmInd = sql.indexOf(" FROM "); int ordInd = sql.indexOf(" ORDER BY "); if (frmInd == -1) { fileName = "ErrorSQL"; } frmInd+=5; if (whInd > 0) { fileName = sql.substring(frmInd, whInd).trim(); } else if (ordInd > 0) { fileName = sql.substring(frmInd, ordInd).trim(); } else { fileName = sql.substring(frmInd).trim(); } } return fileName + "." + fileExt; } }DataTypeConstant.java
package com.manny.db.common; public interface DataTypeConstant { public static String TYPE_VARCHAR="VARCHAR"; public static String TYPE_CHAR="CHAR"; }
相关文章推荐
- poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
- JDBC实现数据库的几种基本操作(查询,分页查询,根据关键字进行查询以及插入数据)
- 通过jdbc实现对数据库中数据的增删查改操作
- SpringMVC 实现POI读取Excle文件中数据导入数据库(上传)、导出数据库中数据到Excle文件中(下载)
- jdbc导出数据库数据到Excel表格
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- 依赖POI实现EXCEL导入数据并生成javaBean和EXCEL根据数据库表导出
- Java实现数据库数据导出到Excel中并下载到浏览器本地
- JSP实现从数据库导出数据到Excel下载的方法
- JSP实现从数据库导出数据到Excel下载的方法
- jdbc连接数据库的7大步骤(以通过jdbc连接实现数据的插入、更新为例)
- 使用PL/SQL Developer工具来实现创建表空间、创建数据库、备份数据库、数据导出等操作
- 利用JDBC连接实现跨服务器跨数据库跨表数据传输
- Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- JAVA实现数据库数据导入/导出到Excel(POI)
- 数据库数据导入导出系列之五 C#实现动态生成Word(转)
- JDBC操作Vertica数据库,用PreparedStatements对象实现批量插入数据
- 使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接删除数据库数据
- [转]Oracle如何实现创建数据库、备份数据库及数据导出导入的一条龙操作
- asp.net实现Gradview绑定数据库数据并导出Excel的方法