JAVA 批量录入 急!!!!

vigoss1280 2012-08-21 01:27:08
首先不知道这个 方法这样写对不对
public boolean addPurchasingThemThe(String impttGRNNumber,String impttPurchaseBatch,String impttSteelRollNumber,String impttBrand,String impttSpecifications,String impttWeight,String impttWareHousingHeavy,String impttMaterialCoding,String impttMateriaType){
try{
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con=DriverManager.getConnection( "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CowainDB;userName=CMW;password=Cek50170270");
String sql="insert into PurchasingThemThe values(?,?,?,?,?,?,?,?,?)";
PreparedStatement sta = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//for(int i=0;i <100;i++)
//{
sta.setString(1,impttGRNNumber);
sta.setString(2,impttPurchaseBatch);
sta.setString(3,impttSteelRollNumber);
sta.setString(4,impttBrand);
sta.setString(5,impttSpecifications);
sta.setString(6,impttWeight);
sta.setString(7,impttWareHousingHeavy);
sta.setString(8,impttMaterialCoding);
sta.setString(9,impttMateriaType);
sta.addBatch();
//}
sta.executeBatch();

}catch (Exception e) {
// TODO: handle exception
e.fillInStackTrace();
return false;
}
return true;
}


还有在 页面 我都不知道 怎么样去弄 页面上用的表格 里面的<input>接受值 用的interator读出来的 然后使用ACTION 在去接收 请问这样 应该怎么写啊 求大腿....
...全文
216 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
菖蒲老先生 2012-08-22
  • 打赏
  • 举报
回复
你现在的做法是
public boolean addPurchasingThemThe(String impttGRNNumber,String impttPurchaseBatch,String impttSteelRollNumber,String impttBrand,String impttSpecifications,String impttWeight,String impttWareHousingHeavy,String impttMaterialCoding,String impttMateriaType)

然后在别的逻辑了for循环调用addPurchasingThemThe(......),以达到批量录入的功能么。

首先这种做法效率很低,不可取,你不可能每录入一条数据就要创建一个connection,然后执行一条sql语句。

你问我的List<RecordVo> list = xxxxx中的xxxxx从何而来,
其实只要你调用addPurchasingThemThe的时候,传的那些参数就是list的数据元,举个简单的逻辑。

public void executeBatch() throws Exception {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=CowainDB;userName=CMW;password=Cek50170270");

String sql="insert into PurchasingThemThe values(?,?,?,?,?,?,?,?,?)";
PreparedStatement sta = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);

List<RecordVo> list = xxxx;// 这根据你以前传给addPurchasingThemThe的参数可以得到。
addPurchasingThemThe(List<RecordVo> list, PreparedStatement sta); // 可以实现批量录入
if (con != null) {
con.close();
con = null;
}
}

public boolean addPurchasingThemThe(List<RecordVo> list, PreparedStatement sta) throws Exception {
for (RecordVo vo : list) {
sta.setString(1, vo.getImpttGRNNumber());
// ......
sta.addBatch();
}
sta.executeBatch();
if (sta != null) {
sta.close();
sta = null;
}
}
vigoss1280 2012-08-21
  • 打赏
  • 举报
回复
谁最好有个 完整的DEMO 发个给我看看124207525@qq.com
vigoss1280 2012-08-21
  • 打赏
  • 举报
回复
那我 页面上的值 怎么传啊 ...
菖蒲老先生 2012-08-21
  • 打赏
  • 举报
回复
for循环的注释解开,没什么问题啊。
比如要插入的值存在RecordVo里。
RecordVo里有impttGRNNumber,。。。。impttMateriaType等等9个字段,还有相应的getter,setter方法。
List<RecordVo> list = xxxxx;
for (RecordVo vo : list) {
sta.setString(1,vo.getImpttGRNNumber);
......
sta.setString(9,vo.getImpttMateriaType);
sta.addBatch();
}
sta.executeBatch();
vigoss1280 2012-08-21
  • 打赏
  • 举报
回复
我的意思是 我要加 批处理 怎么做哦
ycy42739 2012-08-21
  • 打赏
  • 举报
回复
首先说一下你上面的程序,我粗略的看了一下。感觉没什么大问题,应该可以执行,但本人认为有点小瑕疵:
1、可以将数据库的连接部分封装在一个Util类中,需要的时候直接:
Connection con = Util.getConnection();
2、将imptt封装成Imptt类这样方法可以写成:
public boolean addPurchasingThemThe(Imptt imptt){
sta.setString(1,imptt.get(impttGRNNumber));
sta.setString(2,imptt.get(impttPurchaseBatch));
...

}
3、感觉在此处没必要用批处理。


在页面对对后台传过来的数据处理可以用jstl标签和el表达式,你在问题中所说的interator是struts2的标签,如过你会用的话更简单些。你可以把你的关于页面不懂的问题更详细的描述一下,方便更好的回答。


81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧