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