Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 336535
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T10:15:06+00:00 2026-05-12T10:15:06+00:00

I need to extract data from a DB2 table, run some processing on each

  • 0

I need to extract data from a DB2 table, run some processing on each returned row and output to a flat file. I’m using iBatis but found that using the queryForList I started getting out of memory errors, I’ll be looking at 100k+ rows of data increasing.

I’ve looked at using queryWithRowHandler instead but the iBatis RowHandler interface doesn’t throw an exception from its handleRow function so if it gets an error I can’t properly report it back and stop iterating the rest of the data. It looks like I can throw a RuntimeException but that doesn’t strike me as a neat way of doing things.

I’d like to be able to stop processing while throwing a meaningful Exception indicating whether the error occurred on the data manipulation, the file access or whatever.

Has anyone had experience with this approach or have an alternative solution using iBatis. I know I could look to do this without iBatis, just using JDBC, but as iBatis is used for all other DB access in my app I’d like to avail of this architecture if possible.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T10:15:06+00:00Added an answer on May 12, 2026 at 10:15 am

    1) Create your own RowHandler interface with checked Exceptions in signature:

    public interface MySpecialRowHandler {
        public void handleRow(Object row) 
            throws DataException, FileException, WhateverException;
    }
    

    2) Inherit (or even better, delegate ) from SqlMapDaoTemplate to add a new method that will manage your own handler with the same Exceptions in signature:

    public class MySpecialTemplate extends SqlMapDaoTemplate {
        ...
        public void queryWithRowHandler(String id, 
            final MySpecialRowHandler myRowHandler
        ) throws DataException, FileException, WhateverException {
            // "holder" will hold the exception thrown by your special rowHandler
            // both "holder" and "myRowHandler" need to be declared as "final"
            final Set<Exception> holder = new HashSet<Exception>();
            this.queryWithRowHandler(id,new RowHandler() {
                public void handleRow(Object row) {
                    try {
                        // your own row handler is executed in IBatis row handler
                        myRowHandler.handleRow(row);
                    } catch (Exception e) {
                        holder.add(e);
                    }
                }
            });
            // if an exception was thrown, rethrow it.
            if (!holder.isEmpty()) {
                Exception e = holder.iterator().next();
                if (e instanceof DataException)     throw (DataException)e;
                if (e instanceof FileException)     throw (FileException)e;
                if (e instanceof WhateverException) throw (WhateverException)e;
                // You'll need this, in case none of the above works
                throw (RuntimeException)e;
            }
        }
    }                    
    

    3) Your business code will look like this:

    // create your rowHandler
    public class Db2RowHandler implements MySpecialRowHandler {
        void handleRow(Object row) throws DataException, FileException, WhateverException {
            // what you would have done in ibatis RowHandler, with your own exceptions
        }
    }
    // use it.
    MySpecialTemplate template = new MySpecialTemplate(daoManager);
    try {
        template.queryWithRowHandler("selectAllDb2", new Db2RowHandler());
    } catch (DataException e) {
        // ...
    } catch (FileException e) {
        ...
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 224k
  • Answers 225k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer You can compile actionscript to swf file directly, but you… May 13, 2026 at 12:53 am
  • Editorial Team
    Editorial Team added an answer TDBF seems to be one of the most used (and… May 13, 2026 at 12:53 am
  • Editorial Team
    Editorial Team added an answer You get a NullPointerException because of the use of the… May 13, 2026 at 12:53 am

Related Questions

I need to extract data from a .mpp file on the network and combine
I need to extract data from a .dbf file and transform it into xml.
I need to extract data from a structure and put it into a list,
I need to implement a daemon that needs to extract data from a database,

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.