请大家帮忙写一个io操作文件,文件内容保存到数据库的例子。 谢谢!文件格式固定:姓名|年龄|入学时间|字段之间以管道符分开如:
张三|28|2001|
李四|29|2002|
王五|30|2003|
..........得到文件后检测格式是否正确,如正确批量插入数据库中(数库表自行建立)
如错误,提示格式不正确。

解决方案 »

  1.   

    //读文件和插入数据:
    package test.csdn;import java.util.*;
    import java.io.*;
    import java.sql.*;import test.database.DatabaseUtils;public class FileImport {
    public static void main(String [] args) {
    FileImport importer = new FileImport();
    List list = importer.readData("files\\testImport.txt");
    importer.insertData(list);
    }

    public List readData(String fileName) {
    ArrayList list = new ArrayList();
    int lineNum = 0;

    try {
    BufferedReader br = new BufferedReader(new FileReader(new File(fileName)));
    String inputLine;

    while ((inputLine = br.readLine()) != null) {
    lineNum++;
    String [] attrs = inputLine.split("\\|");

    ImportObject line = new ImportObject(attrs[0],
    Integer.parseInt(attrs[1]), Integer.parseInt(attrs[2]));

    list.add(line);
    }
    } catch (Exception e) {
    System.out.println("第" + lineNum + "行数据有误!");
    e.printStackTrace();
    }

    return list;
    }
    /**
     * create table student(
         *  name varchar2(20),
         *  age integer,
         *  enrollYear integer
     * );
     */
    public void insertData(List list) {
    try {
    Connection conn = test.database.DatabaseUtils.getMyConn();

    PreparedStatement pstmt = conn.prepareStatement("insert into student(name," +
    " age, enrollyear)values(?, ?, ?)");

    for(int i = 0; i < list.size(); i++) {
    ImportObject obj = (ImportObject) list.get(i);

    pstmt.setString(1, obj.getName());
    pstmt.setInt(2, obj.getAge());
    pstmt.setInt(3, obj.getEnrollAge());

    pstmt.addBatch();
    }

    pstmt.executeBatch();

    pstmt.close();
    conn.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    }//对应的实体
    package test.csdn;public class ImportObject {
    private String name;
    private int age;
    private int enrollYear;

    public ImportObject(String name, int age, int enrollYear) {
    this.name = name;
    this.age = age;
    this.enrollYear = enrollYear;
    }

    public String getName() {
    return this.name;
    }

    public int getAge() {
    return this.age;
    }

    public int getEnrollAge() {
    return this.enrollYear;
    }
    }
      

  2.   

    import java.sql.*;
    import java.io.*;
    import java.util.ArrayList;public class test {
        public static void main(String[] args) {
            ArrayList<String[]> list=new ArrayList<String[]>();
            try {
                BufferedReader reader=new BufferedReader(new FileReader(new File("d:\\a.txt")));
                
                String str=reader.readLine();
                while(str!=null)
                {
                    String[] arr=str.split("\\|");                list.add(arr);
                    str=reader.readLine();
                }
                reader.close();            int nums=insert(list);
                System.out.println("成功加入"+nums+"条!");
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        
        public static int  insert(ArrayList<String[]> list)
        {
            int nums=0;
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                Connection conn=DriverManager.getConnection("jdbc:odbc:test");
                PreparedStatement statement=conn.prepareCall("insert into stutable values(?,?,?)");            for (int i=0;i<list.size();i++)
                {
                    String[] strs=list.get(i);
                    for (int a=0;a<3;a++)
                    {
                        statement.setString(a+1,strs[a]);
                    }
                    
                    if (statement.executeUpdate()==1)
                    {
                        nums++;
                    }
                    
                    statement.clearParameters();
                }
                
                statement.close();
                conn.close();
            } catch (Exception ex) {
                ex.printStackTrace();
            }finally{
                return nums;
            }
        }
    }
    给分吧
      

  3.   

    什么数据库啊?oracle的话直接sql loader,用java写,需要可以联系我([email protected]).