向数据库插入批量数据(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