ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff Butler" <jeffgbut...@gmail.com>
Subject Re: Problem in resultMap:Cause: java.sql.SQLException: Invalid state, the ResultSet object is closed
Date Wed, 16 Apr 2008 11:39:36 GMT
Your JDBC code does not match what iBATIS is doing.  Try this:

try {
  cn = ds.getConnection();
  pst1 = cn.prepareStatement("select * from t_softwares");
  rs1 = pst1.executeQuery();
  while(rs1.next()) {
    System.out.println("software:" + rs1.getString(1));
    pst2 = cn.prepareStatement("select * from t_categories");
    rs2 = pst2.executeQuery();
    while(rs2.next()) {
      System.out.println("category:" + rs2.getString(1));
    }
    rs2.close();
    pst2.close();
  }
  rs1.close();
  pst1.close();
}
Jeff Butler


On Tue, Apr 15, 2008 at 10:36 PM, nepalon <inepalon@163.com> wrote:

>
> I try the code and it work well.At first, I get Connection using
> DriverManager and work well.I think the bug maybe cause by DataSource that
> return Connection from pool,so I try to get Connection using
> DataSource,but
> it work well too.So I still believe the exception causing by iBatis.
>
> Connection cn = null;
>                PreparedStatement pst1 = null;
>                PreparedStatement pst2 = null;
>                ResultSet rs1 = null;
>                ResultSet rs2 = null;
>                DataSource ds =
> (BasicDataSource)ctx.getBean("cmsDbcpDataSource");
>
>                try
>                {
> //
>  Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
> //              cn =
>
> DriverManager.getConnection("jdbc:jtds:sqlserver://localhost:1433/macconverter",
> "sa", "iloveyou");
>                        cn = ds.getConnection();
>                pst1 = cn.prepareStatement("select * from t_softwares");
>                rs1 = pst1.executeQuery();
>                while(rs1.next())
>                {
>                        System.out.println("software:" + rs1.getString(1));
>                }
>                pst2 = cn.prepareStatement("select * from t_categories");
>                rs2 = pst2.executeQuery();
>                while(rs2.next())
>                {
>                        System.out.println("category:" + rs2.getString(1));
>                }
>                }
>                catch(Exception e)
>                {
>                        e.printStackTrace();
>                        assertTrue(false);
>                }
>                finally
>                {
>                        try {
>                                rs1.close();
>                                rs2.close();
>                                pst1.close();
>                                pst2.close();
>                                cn.close();
>                        }
>                        catch (SQLException e)
>                        {
>                         }
>                }
>
> Larry Meadors wrote:
> >
> > Google for "sql 2005 HY010 jdbc -db2", and you'll get more info - it
> > looks like you're not the first person to get this error, but I didn't
> > see anything that led me to believe that this is a bug in iBATIS -
> > more likely an issue with the driver, possibly configuration.
> >
> > Try simplifying the mapped statement and/or doing the query with JDBC
> > instead and see what happens.
> >
> > Larry
> >
> >
> > On Mon, Apr 14, 2008 at 11:46 PM, nepalon <inepalon@163.com> wrote:
> >>
> >>  I am sure my DB is configured to allow more than one ResultSet open.As
> >> you
> >>  see in the above code, the code CategoryModel model =
> >>  categoryDao.getCategoryById(273) I code can work well.The code will
> load
> >> the
> >>  category object the id is 273 and its parent category object whick the
> >> id is
> >>  270.In this code,more than one ResultSet was open.
> >>
> >>
> >>
> >>
> >>  Jeff Butler-2 wrote:
> >>  >
> >>  > I once had a similar problem with DB2.  The problem was that the DB
> >> was
> >>  > configured to allow only one open ResultSet per connection.
> >>  >
> >>  > With your query, you will have more than one open ResultSet - so
> make
> >> sure
> >>  > your DB is configured to allow this.
> >>  >
> >>  > Jeff Butler
> >>  >
> >>  > On Sat, Apr 12, 2008 at 10:47 PM, nepalon <inepalon@163.com> wrote:
> >>  >
> >>  >>
> >>  >> The DB i using is SQL Server2005.The error string(HY010) means
> >> "Invalid
> >>  >> state, the ResultSet object is closed".Somebody says this error
> cause
> >> by
> >>  >> using miscrosoft sql server driver,but I using jtds as my dirver.
> >>  >>
> >>  >> Larry Meadors wrote:
> >>  >> >
> >>  >> > This looks like a DB2 issue, you may want to search for that
> error
> >>  >> > string (HY010), I think that's probably going to get you a
> solution
> >>  >> > quickest.
> >>  >> >
> >>  >> > Larry
> >>  >> >
> >>  >> >
> >>  >>
> >>  >> --
> >>  >> View this message in context:
> >>  >>
> >>
> http://www.nabble.com/Problem-in-resultMap%3ACause%3A-java.sql.SQLException%3A-Invalid-state%2C-the-ResultSet-object-is-closed-tp16624071p16656703.html
> >>  >>  Sent from the iBATIS - User - Java mailing list archive at
> >> Nabble.com.
> >>  >>
> >>  >>
> >>  >
> >>  >
> >>
> >>  --
> >>  View this message in context:
> >>
> http://www.nabble.com/Problem-in-resultMap%3ACause%3A-java.sql.SQLException%3A-Invalid-state%2C-the-ResultSet-object-is-closed-tp16624071p16695510.html
> >>
> >>
> >> Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Problem-in-resultMap%3ACause%3A-java.sql.SQLException%3A-Invalid-state%2C-the-ResultSet-object-is-closed-tp16624071p16715819.html
>  Sent from the iBATIS - User - Java mailing list archive at Nabble.com.
>
>

Mime
View raw message