ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nepalon <inepa...@163.com>
Subject Re: Problem in resultMap:Cause: java.sql.SQLException: Invalid state, the ResultSet object is closed
Date Thu, 17 Apr 2008 02:31:24 GMT

I have tried the code and it work well:
Connection cn1 = null;
		PreparedStatement pst1 = null;
		PreparedStatement pst2 = null;
		ResultSet rs1 = null; 
		ResultSet rs2 = null; 
		DataSource ds = (BasicDataSource)ctx.getBean("cmsDbcpDataSource");
		
		try
		{
			cn1 = ds.getConnection();
	        pst1 = cn1.prepareStatement("select fid, fname, fcategoryid from
t_softwares");
	        rs1 = pst1.executeQuery();
	        while(rs1.next())
	        {
	        	System.out.println("software:" + rs1.getString(2));
	        	pst2 = cn1.prepareStatement("select fid, fname from t_categories
where fid=?");
	        	pst2.setInt(1, rs1.getInt(3));
		        rs2 = pst2.executeQuery();
		        if(rs2.next())
		        {
		        	System.out.println("category:" + rs2.getString(2));
		        }
				rs2.close();
				pst2.close();
	        }
			rs1.close();
			pst1.close();
			cn1.close();
	        
		}
		catch(Exception e)
		{
			e.printStackTrace();
			assertTrue(false);
		}

Jeff Butler-2 wrote:
> 
> 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.
>>
>>
> 
> 

-- 
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-tp16624071p16737591.html
Sent from the iBATIS - User - Java mailing list archive at Nabble.com.


Mime
View raw message