import java.sql.*;
public class del
{
public static void main(String[] args)
{
String kind;
String no;
Statement stmt=null;
Statement stmt1=null;
ResultSet rs=null;
String sql="";
Db db=new Db();
db.Dbconn();
stmt=db.getStmt();
db.Dbconn1();
stmt1=db.getStmt1();
try
{
rs=stmt.executeQuery("select no123,kind from log");
while (rs.next())
{
kind=rs.getString("kind");
no=rs.getString("no123"); System.out.println("1111 : "+no);
System.out.println("kind : "+kind);
ResultSet rs1=null; if (kind.equals("保单"))
{
System.out.println(kind);
stmt1=db.getStmt1();
//在infomix当中执行SQL如果有结果表明有相同的,没有则相反
rs1=stmt1.executeQuery("select polno from charge where polno='"+no+"'");
System.out.println("2222"); if (rs1.next())
{
//执行删除log表当中的记录
String polno=rs1.getString("polno");
stmt.execute("delete from log where no123='"+polno+"'");
}
}
else if (kind.equals("批单"))
{
rs1=stmt1.executeQuery("select indorno from charge where indorno='"+no+"'");
if (rs1.next())
{
String indorno=rs1.getString("indorno");
stmt.execute("delete from log where no123='"+indorno+"'");
}
} else if (kind.equals("立案"))
{
rs1=stmt1.executeQuery("select caseno from regcase where caseno='"+no+"'");
if (rs1.next())
{
String caseno=rs1.getString("caseno");
stmt.execute("delete from log where no123='"+caseno+"'");
}
} else if (kind.equals("赔案"))
{ rs1=stmt1.executeQuery("select indemno from indemnity where indemno='"+no+"'");
if (rs1.next())
{
String indemno=rs1.getString("indemno");
System.out.println(indemno);
sql="delete from log where no123='"+indemno+"'";
System.out.println("sql : "+sql);
stmt.execute(sql);
}
}
}
}
catch (Exception e)
{
System.out.println(e);
}
}
}错误信息是:java.sql.SQLException: ResultSet is closed;
我一直也没有手动关闭 RS ,是不是两个RS交替使用时会自动把前一个关闭呢?如何解决呀?
public class del
{
public static void main(String[] args)
{
String kind;
String no;
Statement stmt=null;
Statement stmt1=null;
ResultSet rs=null;
String sql="";
Db db=new Db();
db.Dbconn();
stmt=db.getStmt();
db.Dbconn1();
stmt1=db.getStmt1();
try
{
rs=stmt.executeQuery("select no123,kind from log");
while (rs.next())
{
kind=rs.getString("kind");
no=rs.getString("no123"); System.out.println("1111 : "+no);
System.out.println("kind : "+kind);
ResultSet rs1=null; if (kind.equals("保单"))
{
System.out.println(kind);
stmt1=db.getStmt1();
//在infomix当中执行SQL如果有结果表明有相同的,没有则相反
rs1=stmt1.executeQuery("select polno from charge where polno='"+no+"'");
System.out.println("2222"); if (rs1.next())
{
//执行删除log表当中的记录
String polno=rs1.getString("polno");
stmt.execute("delete from log where no123='"+polno+"'");
}
}
else if (kind.equals("批单"))
{
rs1=stmt1.executeQuery("select indorno from charge where indorno='"+no+"'");
if (rs1.next())
{
String indorno=rs1.getString("indorno");
stmt.execute("delete from log where no123='"+indorno+"'");
}
} else if (kind.equals("立案"))
{
rs1=stmt1.executeQuery("select caseno from regcase where caseno='"+no+"'");
if (rs1.next())
{
String caseno=rs1.getString("caseno");
stmt.execute("delete from log where no123='"+caseno+"'");
}
} else if (kind.equals("赔案"))
{ rs1=stmt1.executeQuery("select indemno from indemnity where indemno='"+no+"'");
if (rs1.next())
{
String indemno=rs1.getString("indemno");
System.out.println(indemno);
sql="delete from log where no123='"+indemno+"'";
System.out.println("sql : "+sql);
stmt.execute(sql);
}
}
}
}
catch (Exception e)
{
System.out.println(e);
}
}
}错误信息是:java.sql.SQLException: ResultSet is closed;
我一直也没有手动关闭 RS ,是不是两个RS交替使用时会自动把前一个关闭呢?如何解决呀?
kind=rs.getString("kind");
no=rs.getString("no123");的位置互换下看看no=rs.getString("no123");
kind=rs.getString("kind");
你看你的Db类是怎么实现的,db.getstmt()和db.getstmt1()获得的是不是同一个对象的引用。
public class Db
{
Statement stmt=null;
Statement stmt1=null; public void Dbconn ()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/log.mdb;"; Connection conn = DriverManager.getConnection(url);
stmt=conn.createStatement();
}
catch (Exception e)
{
System.out.println(e);
}
}
public Statement getStmt()
{
return stmt;
} public void Dbconn1()
{
try
{
Class.forName("com.informix.jdbc.IfxDriver");
String url = "jdbc:informix-sqli://10.3.0.88:8417/datacenter:INFORMIXSERVER=onshj6;user=ccx99;password=konica1"; //myDB为数据库名
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
//String url="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=e:/log1.mdb;"; Connection conn = DriverManager.getConnection(url);
stmt1=conn.createStatement();
}
catch (Exception e)
{
System.out.println(e);
}
}
public Statement getStmt1()
{
return stmt1;
}}
两套之间会出现交叉出错的问题吗?