把数据库文件写入csv文件和从csv文件中导入数据到数据库中

来源:互联网 发布:vb改变单选按钮样式 编辑:程序博客网 时间:2024/04/30 10:14
import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.SQLException;import java.sql.Statement;import java.util.StringTokenizer;import java.util.Vector;import javax.swing.JOptionPane;public class importAndExportManager {public static void main(String[] args) {//new connectDB().setDbName("mysql");//new importAndOutportManager().importDate("borrow.csv");;//System.out.println("end");} private Connection conn=connectDB.getConnection(); private Statement stmt; private PreparedStatement pstmt; private ResultSetMetaData rsmd=null;  private ResultSet rs=null;  /*  * 获得数据库文件的内容  存放在ResultSet 的对象中  */ public void getDate(String DBname){ String sql="select * from library."+DBname; try {stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);rs=stmt.executeQuery(sql);rsmd=rs.getMetaData();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();JOptionPane.showMessageDialog(null, e.getMessage());} }  public void exportDate(String DBname) throws SQLException{ int row=0;int column=0;Object [][]booklist=null;//数据内容String tableName[]=null;//标签内容getDate(DBname);column=rsmd.getColumnCount();while (rs.next()) {row++;}booklist=new Object[row][column];tableName=new String[column]; for (int i = 1; i < tableName.length+1; i++) {tableName[i-1]=rsmd.getColumnLabel(i);}for(int i=0;i<row;i++){rs.previous();for (int j = 0; j < column; j++) {booklist[i][j]=rs.getObject(j+1);}}//写入csv文件中File csv = new File("E:/Javaproject/library/"+DBname+".csv"); try {BufferedWriter bw = new BufferedWriter(new FileWriter(csv, false));for (int i = 0; i < tableName.length; i++) {bw.write(tableName[i]);if (i!=tableName.length-1) {bw.write(",");}}bw.write("\r\n");for(int i=0;i<row;i++){for (int j = 0; j < column; j++) {bw.write(booklist[i][j].toString());if (j!=column-1) {bw.write(",");}}bw.write("\r\n");}bw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} }  /*  * 从CSV文件中读取内容,存入一个Vector<Object []>对象中。  */public void importDate(String inputFilePath){ Vector<Object []> date = null; Object oneLineDate[]; Vector<String>label=new Vector<String>(); int column=0; File file=new File(inputFilePath); try {BufferedReader br=new BufferedReader(new FileReader(file));String line="";line=br.readLine();StringTokenizer st = new StringTokenizer(line, ",");while (st.hasMoreElements()) {label.add(st.nextToken());//得到标签column++;//利用标题行计算出总共有多少列行}oneLineDate=new Object[column];date=new Vector<Object[]>();for (int i=0;(line=br.readLine())!=null;i++) {StringTokenizer st1 = new StringTokenizer(line, ",");for(int j=0;st1.hasMoreElements();j++){oneLineDate[j]=st1.nextElement();}date.add(i,oneLineDate);oneLineDate=new Object[column];}br.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}insertDate(label,date, file.getName()); } /* *  */ public void insertDate(Vector<String>label,Vector<Object []> date ,String tableName){ String table=tableName.substring(0, tableName.length()-4); //System.out.println(table); StringBuffer sql=new StringBuffer("insert into library."+table+" values("); //利用标签的个数  ,形成这种形式:"insert into library."+table+" values(?,?,?,?) for (int i = 0; i < label.size(); i++) {sql.append("?");if (i!=label.size()-1) {sql.append(',');}} sql.append(')'); //向数据库中写入数据 try {pstmt=conn.prepareStatement(sql.toString());for (int i = 0; i < date.size(); i++) {for (int j = 0; j < date.get(i).length; j++) {pstmt.setObject(j+1, date.get(i)[j]);}pstmt.executeUpdate();}} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}  }}