Hi Geert,

Thanks for responding.

Here is the code snippet:

definitions: dbm is DbQueryManager object
                 p is a Product object which needs to be set with its
"dynamic" properties
                 ds is the Datasource object


Select select = new Select(ds).field("*").from("productpropertydata as ppd,
propertytype as pt")
                                .where("ppd.productID","=",productID)
                                .whereAnd("ppd.propertyID = pt.id");


 PropertyRowProcessor rp = new PropertyRowProcessor();

 if (dbm.executeFetchAll(select,rp)){
         for (Property prop: rp.properties){
                p.setProperty(prop);
          }
  }


// definition of PropertyRowProcessor
class PropertyRowProcessor extends DbRowProcessor {
    public ArrayList<Property> properties = new ArrayList<Property>();

    public boolean processRow(ResultSet rs) throws SQLException {
        try {
            while (rs.next()){
                PropertyType pType = new PropertyType();
                ....


                Property property = new Property(pType);
                property.setName(name);
                property.setValue(rs.getString("value"));

                properties.add(property);
            }
            return true;
        } catch (SQLException e){
            return false;
        }
    }
}


I pasted the sql query string of the Select object select into phpmyadmin
tool and it returned 2 rows which is what I expect. When I debugged the code
above and stepped line by line inside the while(rs.next()) loop of
PropertyRowProcessor it only looped once. I looked
into the resultset object and I don't pretty much understand its internals.

After many failed trials I tried to do the "traditional" way of querying the
database and used the following code:

    Select select = new Select(ds).field("*").from("productpropertydata as
ppd, propertytype as pt")
                                    .where("ppd.productID","=",productID)
                                   .whereAnd("ppd.propertyID = pt.id");


     PropertyRowProcessor rp = new PropertyRowProcessor();

      DbStatement dbst = ds.getConnection().createStatement();
      dbst.executeQuery(select);
      rp.processRow(dbst.getResultSet());
      for (Property prop: rp.properties){
             p.setProperty(prop);
      }

Alas this code worked! the resultset object passed to the processRow
function looped twice!

Thanks, I hope that you could clarify on this matter.

Kerwin


On Thu, May 1, 2008 at 5:54 PM, Geert Bevin <[EMAIL PROTECTED]> wrote:

>
> Hi Kerwin,
>
> Very weird, I didn't get this message through email.
>
> Could you please paste the code that you're using. My initial thought
> would be that you return false from with the DbRowProcessor, this
> interrupt the retrieval. I can say you that that in the tenths of
> applications that I have written, executeFetchAll has always worked
> correctly and the unit tests assert it too. You might have stumbled
> into an edge case where it doesn't, but in that case I need more
> information to be able to track it down and reproduce it.
>
> HTH,
>
> Geert
>
> On Apr 26, 11:06 am, Kerwin <[EMAIL PROTECTED]> wrote:
> > Hi All,
> >
> > I'm new to RIFE and lately I've been trying to use DbQueryManager
> > class specifically executeFetchAll function. The problem is when I
> > iterate through the ResultSet object passed to a subclass of
> > DbRowProcessor it only loops once when I expected it will loop twice.
> >
> > I'm confused because if I use the traditional jdbc way of getting the
> > ResultSet object using the same query and using DbConnection,
> > DbStatement and DbResultSet classes I get the correct no. of rows I
> > expect and loops twice through DbResultSet.
> >
> > Thanks
> > Kerwin
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"rife-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rife-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to