日期:2014-05-20  浏览次数:20624 次

利用流操作文件,并保存到数据库的代码
请大家帮忙写一个io操作文件,文件内容保存到数据库的例子。   谢谢!

文件格式固定:

姓名|年龄|入学时间|

字段之间以管道符分开

如:
张三|28|2001|
李四|29|2002|
王五|30|2003|
..........

得到文件后检测格式是否正确,如正确批量插入数据库中(数库表自行建立)
如错误,提示格式不正确。

------解决方案--------------------
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();
}

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;
}
}
}