日期:2014-05-18  浏览次数:20734 次

数据批量导入的问题
我所做系统涉及到批量导入一部分,是用纯JSP和oracle9i做的,是把内容放到记事本或者ECLCLE中,在JSP页面上以文件上传形式导入到库中.由于我是初次涉及到这方面的内容,而且到入表字段比较多,该如何实现,谁有例子给我一个.

------解决方案--------------------
//恢复数据库
public boolean restore(String tablename,String[][] msg,JProgressBar jProgressBar,JLabel jLabel){

boolean f=false;
System.out.println(tablename);
try{
//删除数据库中的原有记录
PreparedStatement del=con.prepareStatement( "delete from "+tablename);
del.execute();

String[][] columntype=getcolumntype(tablename,msg[0].length);
//String sql= "insert into "+tablename;//合成的SQL insert语句

//拼凑SQL语句
String sql= "insert into "+tablename;//合成的SQL insert语句
String sql1= "( ";//SQL insert语句的数据列名部分
String sql2= "( ";//SQL insert语句的value值部分

for(int j=0;j <msg[0].length;j++)
{
sql1=sql1+columntype[j][0]+ ", ";
sql2=sql2+ "?, ";
}

sql1=sql1.substring(0,sql1.length()-1);
sql1=sql1+ ") ";

sql2=sql2.substring(0,sql2.length()-1);
sql2=sql2+ ") ";

sql=sql+ " "+sql1+ " values "+sql2;

System.out.println(sql);
PreparedStatement ins=con.prepareStatement(sql);

for (int i=0;i <msg.length;i++)
{
//循环为PreparedStatement中的参数赋值
for (int k=0;k <msg[0].length;k++)
{
if (msg[i][k]== "\u0003 " || msg[i][k].equals( "\u0003 "))
{
ins.setString(k+1,null);
}
else
{
ins.setString(k+1,msg[i][k]);
}
}

int tt=i*100/msg.length;
jProgressBar.setValue(tt);
jLabel.setText( "已经整合 "+i+ "条数据 ");

ins.addBatch();
}

jLabel.setText( "正在批量提交表 "+tablename);
ins.executeBatch();
jProgressBar.setValue(100);
jLabel.setText( "已完成恢复 ");
f=true;

}catch(Exception e){
System.out.println(e);
}

return f;
}
------解决方案--------------------
我有 你加我QQ 我的QQ是303216735..我刚做玩..我上传用的是jspupload,数据读取用的是poi..
代码是自己写的,错误捕捉用的ajax技术.如果需要免费发油箱..hoho主要是现在正在我们自己的系统中使用,还算比较成熟吧..看看你在使用中是否遇到问题帮我解决..大家互相学习