Sean,

Have you thought about constructing a DAO/Adapater object that receives your
input, and then does the notorious SQL-string building on the inside? If you
cannot get the elegant solution, you should at least make it appear elegant
by wrapping it inside of the DAO layer.

-----Original Message-----
From: Sean Burlington [mailto:[EMAIL PROTECTED] 
Sent: Monday, May 09, 2005 10:38 AM
To: Struts Users Mailing List
Subject: is there a better way of creating SQL queries from form objects ?


Hi all,
        this is such a common problem that I'm sure there must be loads of 
advice on how to deal with it - I just can't find it.

I have a database containing many records

Searches can be performed on several text fields - and refined by 
boolean fields.

The html form thus consist of several text inputs and several checkboxes.

Only one text box should ever be filled in.

I can work out the resultant sql query by using lots of if statements as 
below but it just doesn't seem very elegant ...

I could also break the search down into several forms and so different 
actions - but this seems overly complex.

String query = "select order from po where";
String searchTerm = "";

if (!"".equals(search.getCode())){
     query += " code=?";
     searchTerm = search.getCode();
} else if (!"".equals(search.getParish())){
     query += " parish=?";
     searchTerm = search.getParish();
} else if (!"".equals(search.getDetails())){
     query += " details=?";
     searchTerm = search.getDetails();
}

if (search.isActiveMods()){
     query += " and active";
}
if (search.isActiveReclass()){
     query += " and reclass";
}

PreparedStatement statement = conn.prepareStatement(query);
statement.setString(1, searchTerm);

-- 

Sean

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments, contains 
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New 
Jersey, USA 08889), and/or its affiliates (which may be known outside the 
United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as 
Banyu) that may be confidential, proprietary copyrighted and/or legally 
privileged. It is intended solely for the use of the individual or entity named 
on this message.  If you are not the intended recipient, and have received this 
message in error, please notify us immediately by reply e-mail and then delete 
it from your system.
------------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to