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

向数据库插入批量数据(JDBC和jtds)出现端口错误!每次插入到3千条就中断
JAVA用JDBC和jtds向SQL   SERVER中插入1百万条数据,插到3千条就提示:Network   error   IOException:   Address   already   in   use:   connect(JTDS)和error   socket  
插入代码:
public   void   executeInsert(String   sql)   throws   SQLException   {
          try   {

conn   =   DriverManager.getConnection(url,username,password);
pstmt   =   conn.prepareStatement(sql);
pstmt.executeUpdate();
                                                pstmt.close();
                                                conn.close();
       
  }   catch   (SQLException   ex)   {
System.err.println( "DBconn.executeUpdate: "   +   ex.getMessage());
}
}

------解决方案--------------------
可能是太过频繁连接断开造成sql server连接异常,虽然你已经端口了,还是会占用端口等待状态。或者你可以试试用一次连接等全部数据插入完毕再断开数据库连接

------解决方案--------------------
可能 你在close 以后要要将

pstmt=null; 这样它才释放资源,不知道对不对啊,你试 一下吧
------解决方案--------------------
晕,你在不停的连接啊,不停的关闭啊,资源都被你耗光了
------解决方案--------------------
呵呵! 你每插入一条数据 都要联接一次数据 再断开 再联接 再断开
你的电脑真好 居然没死机

------解决方案--------------------
要是你疯狂的用循环调用这个方法那可太厉害了啊...数据库能承受得起吗?每次都创建连接(非常耗资源),每次都释放........
------解决方案--------------------
public void executeInsert(ArrayList sqlList) throws SQLException {
try {
conn = DriverManager.getConnection(url,username,password);
pstmt = conn.prepareStatement(sql);
int sqlCount = 0;
if (sqlList!= null) {
sqlCount = sqlList.size();
}

String sql = null;
for (int i=0;i <=sqlCount;i++) {
sql = sqlList.get(i);
pstmt = conn.prepareStatement(sql);
pstmt.executeUpdate();
}
} catch (SQLException ex) {
System.err.println( "DBconn.executeUpdate: " + ex.getMessage());
} finally {
if (pstmt != null) {pstmt.close();}
if (conn != null) {conn.close();}
}
}
}
------解决方案--------------------
楼上的正确。我就不贴了。开发中注意:一次请求做到不超过1次连接数据库。
------解决方案--------------------
有的人就会纸上谈兵!
没有做过具体的任务就不要乱说话!
你们为什么要说是连接的问题?
为什么要说是代码的问题?
为什么就不可以说是SQLSERVER的问题!
8楼的朋友,你做过具体的实验吗?
我打赌你没有!
我们要事实就事!

我也遇到过这样的问题,我的解决方法就是用两台电脑来实现数据的COPY!
------解决方案--------------------
呵呵~~~~~哎。。。你们有没有。JAVA程序员的。。。群啊。加我一个呀。
QQ:469208018