读书人

Invalid state, the Connection objec

发布时间: 2012-11-05 09:35:12 作者: rapoo

Invalid state, the Connection object is closed.

That line makes me nervous.

?

快疯掉了,从昨晚到现在一直没有解决的问题;前天写了一个导入程序;

JDK1.5+jTDS1.2.2+SQL SERVER 2000(SP3)+MySQL5;

?

从MySQL中导入抓取回来的数据,到SQL SERVER里,程序跑了一会就提示上面那错误:

?

java.sql.SQLException: Invalid state, the Connection object is closed.
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC.java:249)

?

折腾了一整天,还是没把问题解决,网上找了N多资料,看来这个问题相当少见,只在SUN的官方上找到一篇http://forum.java.sun.com/thread.jspa?threadID=678409&start=0&tstart=0

?

SQL SERVER也调试了,Connection打印出来也是是没有closed的,但都总是出现这个问题,真的快疯了;

?

请有经验的给点提示,小弟将发自内心的感谢!

?

public void insertMsData(......) {
??Connection conn=null;
??Statement stmt1=null;
??Statement stmt2=null;
??Statement stmt3=null;
??
??String lname="重录";
??
??String COM_ID=(getComid()+1)+"";
??String Lnk_ID=(getLnkid()+1)+"";
??String DeptName="人事部";
??
??int j=0;
??int t=0;
??int k=0;
??String sql="INSERT INTO CRM_Company ......";
??
??String sql1="INSERT INTO CRM_Linkman (Lnk_ID,COM_ID,Lnk_Name,DeptName,Sex,PosType,SensType,Phone_Z,Phone_N,IsAdmin,DelFlag,RegisterDate) VALUES ("+Lnk_ID+","+Integer.parseInt(COM_ID)+",'"+lname+"','"+DeptName+"',"+1+","+3+","+1+","+0000+","+00000000+","+1+","+0+",convert(smalldatetime,"+RegisterDate+"))";
??
??String sql2="INSERT INTO ShieldTable (S_ID,S_Company) VALUES ('"+COM_ID+"','"+COM_Name+"')";
??
??try {
???if (conn==null || conn.isClosed()) {
????conn=dbc.getMSConnection();
???}
???System.out.println("@@@@@@@@conn:"+conn);
???stmt1=conn.createStatement();
???j=stmt1.executeUpdate(sql);
???stmt2=conn.createStatement();
???t=stmt2.executeUpdate(sql1);
???stmt3=conn.createStatement();
???k=stmt3.executeUpdate(sql2);
???
??} catch (SQLException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
???System.exit(0);
???
??}finally{
???try {
????
???if(stmt1!=null){
????stmt1.close();
???}?
???if(stmt2!=null){
????stmt2.close();
???}?
???if(stmt3!=null){
????stmt3.close();
???}
???if(conn!=null){
????conn.close();
????conn=null;
???}
???} catch (SQLException e) {
????e.printStackTrace();
???}


THANKS
MarcoTulioBorges

但是我已经是1.2.2的版本了,看来updated version这招不行了,晕死了; 2 楼 a3mao 2008-03-14 好好查看你的程序,我想还是你的程序有小问题。
你这应该是个多线程的环境,多线程要好好看看connection,statement等有没有互相引用的,可能是一个线程打开一个资源,用完后要关闭,可在关闭前被另一个线程使用,这样前一个线程关闭了资源,而另外哪个线程在调用时就会出错。 3 楼 Jatula 2008-03-14 单线程的,因为是个小东西,所以就没用到线程池,一个单线程的程序; 4 楼 Jatula 2008-03-16 无奈的时,我选择了线程池!解决! 5 楼 suky2000 2008-12-10 Jatula 写道
无奈的时,我选择了线程池!解决!

你好,我也遇到这样的问题.请问你的线程池 是如何解决这个问题的.

谢谢

读书人网 >操作系统

热点推荐