Note: forwarded message attached.

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
--- Begin Message ---
 
  thanks again, Marek, for all the help!

--- Marek Wawrzyczny <[EMAIL PROTECTED]> wrote:

> Hi Alan,
> 
> I'd use the Entity classes and treat the records as objects:
> 
> 
> Date dob = null;
> DateFormat df = DateFormat.getDateInstance();
> DataContext ctxt =
>               
> BasicServletConfiguration.getDefaultContext(request.getSession());
> 
> String customerName = request.getParameter("customerName");
> String dateOfBirth = request.getParameter("dateOfBirth");
> 
> Expression exp = ExpressionFactory.matchExp(
>               Customer.CUSTOMER_NAME_PROPERTY, customerName );
> SelectQuery query = new SelectQuery(Customer.class, exp);
> 
> List customers = null;
> try {
>       customers = ContextManager.getSharedContext().performQuery(query);
> } catch (Exception e) {
>       // Bad stuff happened, deal with it
>       e.printStackTrace();
> }
> 
> // Fetch the record as an Entity class... you can then implement fancy 
> // stuff in the Entity class, like conversions...
> 
> // Anyway, we expect only one customer, right?
> Customer customer = (customers != null) && (customers.count() == 1) ?
>               (Customer)customers.get(0) : null;
> 
> if (customer != null) {
>       try { 
>               dob = df.parse(dateOfBirth);  
>               // Of course you could override the setDateOfBirth(...) 
> function to take an
>               // Object and do the parsing itself...       
>               customer.setDateOfBirth(dob);
>               ctxt.commitChanges();
>       } catch(ParseException e) {
>               System.out.println("Unable to parse ");
>       }
> } else {
>       // Perhaps notify someone... or something...
> }
> 
> 
> Hope this helps.
> 
> Marek Wawrzyczny
> 
> 
> On Thursday 06 April 2006 08:56, Alan Baltazar wrote:
> > How would you implement your way for updating tables?
> >
> > --- "Gentry, Michael (Contractor)" <[EMAIL PROTECTED]> wrote:
> > > I've never used UpdateQuery before, but try:
> > >
> > > UpdateQuery updated =
> > >   new UpdateQuery(Customer.class,
> > >                   template.expWithParameters(params));
> > >
> > > Also, I don't think you need the commitChanges() at the end ...  That
> > > would be more useful if you were working with actual CayenneDataObjects,
> > > which you aren't.  Also, I think your object graph might get out-of-sync
> > > this way, which could lead to more problems.
> > >
> > > /dev/mrg
> > >
> > >
> > > -----Original Message-----
> > > From: Alan Baltazar [mailto:[EMAIL PROTECTED]
> > > Sent: Wednesday, April 05, 2006 5:13 PM
> > > To: [email protected]
> > > Subject: UpdateQuery not updating
> > >
> > >
> > > Hello,
> > >
> > >   I'm trying to update a field in a table using the UpdateQuery. The
> > > following code
> > > doesn't update my data.
> > >
> > > Date dob = null;
> > > DateFormat df = DateFormat.getDateInstance();
> > > DataContext ctxt =
> > > BasicServletConfiguration.getDefaultContext(request.getSession());
> > >
> > > String customerName = request.getParameter("customerName");
> > > String dateOfBirth = request.getParameter("dateOfBirth");
> > >
> > > Expression template = Expression.fromString("customerName =
> > > $customerName");
> > > Map params = new HashMap();
> > > params.put("customerName", customerName);
> > >
> > > UpdateQuery updated = new UpdateQuery(Customer.class,template);
> > >
> > > try {
> > >    dob = df.parse(dateOfBirth);
> > > }
> > > catch(ParseException e) {
> > >    System.out.println("Unable to parse ");
> > > }
> > >
> > > updated.addUpdAttribute("DATE_OF_BIRTH",dob);
> > > ctxt.performNonSelectingQuery(updated);
> > > ctxt.commitChanges();
> > >
> > > return mapping.findForward("success");
> > > }
> > >
> > > this is the mysql table,
> > > CREATE TABLE `CUSTOMER` (
> > >   `CUSTOMER_ID` int(10) unsigned NOT NULL ,
> > >   `CUSTOMER_NAME` varchar(20) NOT NULL default '',
> > >   `DATE_OF_BIRTH` date NOT NULL default '0000-00-00',
> > >   PRIMARY KEY  (`CUSTOMER_ID`)
> > > ) TYPE=InnoDB;
> > >
> > > here's the data object,
> > > public class _Customer extends org.objectstyle.cayenne.CayenneDataObject
> > > {
> > >
> > >     public static final String CUSTOMER_NAME_PROPERTY = "customerName";
> > >     public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
> > >     public static final String PRODUCT_ARRAY_PROPERTY = "productArray";
> > >
> > >     public static final String CUSTOMER_ID_PK_COLUMN = "CUSTOMER_ID";
> > >
> > >     public void setCustomerName(String customerName) {
> > >         writeProperty("customerName", customerName);
> > >     }
> > >     public String getCustomerName() {
> > >         return (String)readProperty("customerName");
> > >     }
> > >
> > >
> > >     public void setDateOfBirth(java.util.Date dateOfBirth) {
> > >         writeProperty("dateOfBirth", dateOfBirth);
> > >     }
> > >     public java.util.Date getDateOfBirth() {
> > >         return (java.util.Date)readProperty("dateOfBirth");
> > >     }
> > >
> > >
> > >     public void addToProductArray(dao.Product obj) {
> > >         addToManyTarget("productArray", obj, true);
> > >     }
> > >     public void removeFromProductArray(dao.Product obj) {
> > >         removeToManyTarget("productArray", obj, true);
> > >     }
> > >     public List getProductArray() {
> > >         return (List)readProperty("productArray");
> > >     }
> > >
> > >
> > > }
> > >
> > >
> > >   if there's any other shorter way to do this with UpdateQuery, I'm
> > > listening
> > >
> > > thanks for any help,
> > > alan
> > >
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam?  Yahoo! Mail has the best spam protection around
> > > http://mail.yahoo.com
> >
> > __________________________________________________
> > Do You Yahoo!?
> > Tired of spam?  Yahoo! Mail has the best spam protection around
> > http://mail.yahoo.com
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

--- End Message ---

Reply via email to