Question

How to databind a checkbox list in JSP and insert multiple data to DB?

Asked by: techques

Hi
I have the hard code html checkbox in the following code. How to databind a checkbox list in JSP?

I have a table food in MySQL DB, the schema is
id
foodname

How can I use ResultSet rs = s.executeQuery(sql); to bind the data to the checkbox list?

and how to insert multiple checkbox value to foodpreference in a customer table in DB?
The schema of customer:
id
foodpreference




<input type="checkbox" name="option1" value="Milk"> Milk<br>
<input type="checkbox" name="option2" value="Butter" checked> Butter<br>
<input type="checkbox" name="option3" value="Cheese"> Cheese<br>
 
//Servlet:
MySQLConnect db = new MySQLConnect();
	      Connection con = db.Getconnection();
	      Statement s = con.createStatement();
	      String sql = "SELECT foodname FROM food";
	      ResultSet rs = s.executeQuery(sql);
	      if (rs.next()) {
	        rs.close();
	        s.close();
	        con.close();
	        return true;
	      }
	      rs.close();
	      s.close();
	      con.close();

                                  
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

Select allOpen in new window

This Question has been solved and asker verified All Experts Exchange premium technology solutions are available to subscription members.

Subscribe now for full access to Experts Exchange and get

Instant Access to this Solution

  • Plus...
  • 30 Day FREE access, no risk, no obligation
  • Collaborate with the world's top tech experts
  • Unlimited access to our exclusive solution database
  • Never be left without tech help again

Subscribe Now

Asked On
2009-02-03 at 09:20:25ID24108823
Tags

jsp

,

java

Topics

Java Servlets

,

Java Server Pages (JSP)

Participating Experts
2
Points
100
Comments
22

Trusted by hundreds of thousands everyday for fast, accurate and reliable tech support.

  • "The time we save is the biggest benefit of Experts Exchange to Warner Bros. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange." Mike Kapnisakis, Warner Bros.
  • "Our team likes having a resource that is more secure than just using Google and most experts using this service really know their stuff. It's nice to look here first versus using Google." Dayna Sellner, Lockheed Martin
  • "Anytime that I've been stumped with a problem, 9 out of 10 times Experts Exchange has either the accepted solution or an open discussion of the potential solution to the problem." Kenny Red, eBay Inc.

See what Experts Exchange can do for you.

Got a question?

We've got the answer.

Experts Exchange has been collecting answers to technology questions since 1996…3 million and counting! If you have a question, chances are we already have your answer.

Screenshot of Experts Exchange Knowledgebase

Need individual assistance?

Our experts are ready to help.

If you can't find the exact answer you're looking for, ask our exclusive community of 50,000 experts. You’ll get a personalized answer from a trusted professional.

Screenshot of Experts Exchange Knowledgebase

Want to learn from the best?

Read articles from industry experts.

Thousands of free tech tips, tricks, how-to’s and tutorials are available in our peer reviewed articles section. See for yourself how smart our experts are, no login required.

Screenshot of an Article

Working on a long term project?

Store your work and research.

Save solutions to your questions, answers you’ve discovered through searching plus helpful articles in your personal knowledgebase for easy future access.

Screenshot of Experts Exchange Knowledgebase

Access the answers to your technology questions today.

Subscribe Now

30-day free trial. Register in 60 seconds.

What Makes Experts Exchange Unique?

Members of the expert community talk about why the experience at Experts Exchange is different than what you will find anywhere else.

Trusted by the world's most respected brands.

image of each brand's logo

Faithfully serving IT professionals since 1996.

Experts Exchange Logo

Try it out and discover for yourself.

Subscribe Now

30-day free trial. Register in 60 seconds.

Related Solutions

  1. (databindings)???
    I can't seem to find much about this subject. I would like to create a windows form that is bound in some fashion to a SQL database. Basically the form would contain fields that when text is inputted into them it would automatically save to a record. I see (databindings) unde...
  2. Databinding Combobox
    Hi I have a combobox that I use databinding on. Me.cboEmploymentCondition.DataBindings.Add(New System.Windows.Forms.Binding("Text", m_tbl_BindingSourceEmployed, "EmploymentCondition", True)) The problem is not if there are any data in the DB that match...
  3. DAtabinding
    I am making a website in asp.net with C#.I want to bind text box with database.I want to do it in C#.. basically i am loking code for databinding with textbox

Free Tech Articles

  1. WARNING: 5 Reasons why you should NEVER fix a computer for free.
    It is in our nature to love the puzzle. We are obsessed. The lot of us. We love puzzles. We love the challenge. We thrive on finding the answer. We hate disarray. It bothers us deep in our soul. W...
  2. SCCM OSD Basic troubleshooting
    SCCM 2007 OSD is a fantastic way to deploy operating systems, however, like most things SCCM issues can sometimes be difficult to resolve due to the sheer volume of logs to sift through and the dispe...
  3. Migrate Small Business Server 2003 to Exchange 2010 and Windows 2008 R2
    This guide is intended to provide step by step instructions on how to migrate from Small Business Server 2003 to Windows 2008 R2 with Exchange 2010. For this migration to work you will need the fo...
  4. Create a Win7 Gadget
    This article shows you how to create a simple "Gadget" -- a sort of mini-application supported by Windows 7 and Vista. Gadgets can be dropped anywhere on the desktop to provide instant information, ...
  5. Outlook continually prompting for username and password
    There have been a lot of questions recently regarding Outlook prompting for a username and password whilst using Exchange 2007. There are a few reasons why this would happen and I will try to cover t...
  6. Backup Exchange 2010 Information Store using Windows Backup
    There seems to be quite a lot of confusion around the ability to backup Exchange 2010 using the built in Windows Backup feature. This stems from the omission of this feature prior to Exchange 2007 s...

Cloud Class Webinars

  1. Avoiding Bugs in Microsoft Access
    Alison Balter takes and in-depth look at avoiding bugs in Access. In this webinar you will learn about using the immediate window to debug your applications, invoking the debugger, using breakpoints to troubleshoot, stepping through code, setting the next statement to execute, ...
  2. Top 10 Best New Features in Visio 2010
    Scott Helmers gives live demonstrations of the top 10 new features in Visio 2010. This webinar will teach you how to create compelling diagrams by adding shapes to the page with a single click, linking the shapes in a diagram to data in Excel (or SQL Server, or SharePoint), ...
  3. IT Consultant Business Secrets Revealed
    Michael Munger, Experts Exchange tech pro and IT consultant, pulls back the curtain on his very successful businesses and answers question on every IT consultant and business owner should know about. He shares secrets on what he did to solve the 5 most common problems in IT, ...
  4. Disaster Recovery and Business Continuity
    Quest CTO, Mike Billon, gives an overview of the steps involved in building a dunamic disaster recovery plan. Through case studies and an examination of software/hardware tooles for monitoring and testing, you'll gain a better understandin of where you are, where you want ...
  5. Organize Your Visio Diagrams with Containers and Lists
    Scott Helmers uses cross functional flowcharts, wireframe diagrams, data graphic legends and seating charts to teach you: how to ustilize all three new structured diagram components in Visio 2010, the best practices for organizeing shapes in previous version of Visio, how to organize ...
  6. How to Us Objects, Properties, Events and Methods in Microsoft Access
    Alison Dalter gives an in-depbth look at objects, properties, events and methods in Microsoft Access. In this webinar you will learn about using the object browser, referring to objects, working with properties and methods, working with object variables, understanding the ...

Join the Community

Give a Little. Get a Lot.

Join the community of experts here and help other tech pros by answering question in your area of expertise. You can earn FREE access to all Experts Exchange's premium features and resources.

Join the Community

Answers

 

by: KuldeepchaturvediPosted on 2009-02-03 at 14:25:49ID: 23543047

See my response in your dropdown question..
you will have to use the similar technique here too.

 

by: techquesPosted on 2009-02-04 at 10:05:51ID: 23551154

If I use the method mentioned in drop down list which your code does work, how should I input those checkbox value to a field?
If I check all of the following values in checkbox,
Milk
Butter
Cheese
and how should I input to a field of a table?

Do I insert like
Milk, Butter, Cheese into a field of a table?


 

by: KuldeepchaturvediPosted on 2009-02-04 at 10:09:11ID: 23551201

if they are going in the same table, you will have to insert in a loop.

if they are suppose to go to a row.. then Milk, Butter, Cheese into a field of a table

will work.

 

by: mahomePosted on 2009-02-05 at 00:01:45ID: 23557319

You have multiple solutions, depends on what you want to do with the values.

If you just want to store them and not want to query them:
Concat them with a delimiter which can't occur: ',' or '|' and store them in on field. For display you have to split again.

If you want to query after say Milk, use an extra table (1:n relation).

 

by: techquesPosted on 2009-02-05 at 04:33:34ID: 23558645

How can I Concat them with a delimiter which can't occur: ','  with different data types parameters?
How should I get those checkbox values in a for loop?
Milk, Butter, Cheese

 

by: techquesPosted on 2009-02-05 at 04:59:11ID: 23558799

The code below can databind checkbox. However, how can concate the selected checkbox values into a string and insert into DB?
or I need to use string [] array?

How should I write it?

<%  
String sql = "SELECT id, cook FROM cook";
ResultSet rs = s.executeQuery(sql);
%>
<% while (rs.next()) {%>
<input TYPE=checkbox NAME="cook" VALUE="<%=rs.getString("cook")%>"><%=rs.getString("cook")%><BR>
<%}%>
<%
rs.close();
s.close();
con.close();
%>	

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:

Select allOpen in new window

 

by: KuldeepchaturvediPosted on 2009-02-05 at 05:05:48ID: 23558852

on the servlet where you are receiving your paramter. you need to use a String array to get the values..

String[] cook = request.getParameterValues("cook");

 

by: techquesPosted on 2009-02-05 at 05:29:50ID: 23559025

Then, how can I concate [] cook with delimiter ',' ?

I added point to 100. this question is more complicated

 

by: KuldeepchaturvediPosted on 2009-02-05 at 05:33:13ID: 23559057

you can run thru a loop to concat them in a loop..


String cookappend="";
for(int 1=0; i<cook.length;i++)
cookappend += cook[i]+",";

 

by: techquesPosted on 2009-02-05 at 05:33:24ID: 23559058

When I input the string array cook into DB, it just insert Milk.

It seems, Cook was not concated.

upd = "update cooking set cook";
upd = upd + "='"+Cook+"'";
upd = upd + " where cookingid = '" + ID +"';";

                                              
1:
2:
3:

Select allOpen in new window

 

by: KuldeepchaturvediPosted on 2009-02-05 at 05:36:52ID: 23559079

?
Did you select all values on your jsp checkboxes?

Also what is the size of your database field?

 

by: techquesPosted on 2009-02-06 at 09:34:31ID: 23571943

Hi
The checkbox can be listing out according to the data from DB.
However, when I make databind with split the string to array, it throws error.

Here is the code:

<%  
String sql = "SELECT s.id as id, s.cook as cook, m.cooking as e FROM cook s join member m";
ResultSet rs = s.executeQuery(sql);
%>
<% while (rs.next()) {%>
String [] arr = rs.getString("e").split("\\,");
<input TYPE=checkbox NAME="cooking" VALUE="<%=rs.getInt("id")%>" <%if(rs.getInt("id")==Integer.parseInt("arr[]")){out.print("selected");}%>><%=rs.getString("cook")%><BR>
<%}%>
<%
rs.close();
s.close();
con.close();
%>	

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:

Select allOpen in new window

 

by: KuldeepchaturvediPosted on 2009-02-06 at 15:10:06ID: 23575219

>>Integer.parseInt("arr[]"))

you need to specify a array index before you can use it in this method.. parseInt can not convert any array to an Integer.

 

by: techquesPosted on 2009-02-06 at 22:12:39ID: 23576825

Hi

I edited the code below, it can display the databind values with checkbox.
However, when i refresh or revisit the page, dulpicated row of checkbox record displayed.
e.g. Checkbox:
Milk
Juice

After refresh or revisit the page, it will display
Milk
Milk
Juice
Juice

After refresh the page
Milk
Milk
Milk
Juice
Juice
Juice

How can I fix it?

<%  
String sql = "SELECT s.id as id, s.cook as cook, m.cooking as e FROM cook s join member m";
ResultSet rs = s.executeQuery(sql);
%>
<% while (rs.next()) {
if(rs.getString("e") != null)
{
String arr[]= new String [rs.getString("e").split("\\,").length];
for(int i=0;i<arr.length;i++)
{
arr = rs.getString("e").split("\\,");
%>
<input TYPE=checkbox NAME="cook" VALUE="<%=rs.getInt("id")%>" <%if(rs.getInt("id")==Integer.parseInt(arr[i])){out.print("checked");}%>><%=rs.getString("cooking")%><BR>
<%
}}
else
{%>
<input TYPE=checkbox NAME="cook" VALUE="<%=rs.getInt("id")%>"><%=rs.getString("cooking")%><BR>
<%}
}%>

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:

Select allOpen in new window

 

by: KuldeepchaturvediPosted on 2009-02-07 at 07:17:29ID: 23578523

Is there any code that is inserting the data back to your database?
the code you pasted above is not capable of duplicating the entries unless your database contains multiple entries..

This will happen if later down in this page, your are executing any "INSERT into cook...."

then on every refresh, you will be entering data in table resulting in duplicates.

 

by: techquesPosted on 2009-02-07 at 10:00:00ID: 23579365

Is there any code that is inserting the data back to your database? YES, you are correct
When I click submit button, insert
Milk, Juice
into a field in a table.
Then, it comes back to the same page and display
Milk
Milk
Juice
Juice

How can I fix it?

 

by: KuldeepchaturvediPosted on 2009-02-07 at 10:40:25ID: 23579571

you need to make sure that you DO not insert when you do not want to..

Also when it is inserting in the database, it will show back as well..

what kind of functionality do you require here?
insert when something is checked? Insert is some different table? show back whatever is inserted in the database?

depending upon what kind of functionality that you want the coding will differ.

 

by: techquesPosted on 2009-02-07 at 17:26:41ID: 23581479

Hi
Sorry, it is a form with checkbox databind with a table in mysql.
The submit button calls an update query (not insert)
e.g. There are 3 data in the fields and so it display 3 checkbox.
When register member comes back to the form, it will display what did he choose last time.
If he wants to change the selected items, just update the it.
However, the problem is every time I update the form, it will duplicate the data.

 

by: KuldeepchaturvediPosted on 2009-02-07 at 18:30:49ID: 23581709

you need to post the whole code for us to look at before we can figure out whats going on.
Also I believe your original question was answered, so opening a new question with issue is the right way to do it.

 

by: techquesPosted on 2009-02-07 at 18:52:02ID: 23581771

Here are the jsp and java full source code.

Could you help?

This question is hard and I can raise more points.

Cooking.jsp
<%
int myID = 1;
MySQLConnector db = new MySQLConnector();
Connection con = db.Getcon();
Statement s = con.createStatement();
%>
<form name="cookingjsp" action="cooking" method="post">
Cooking:<br>    	
<%  
String sql = "SELECT s.id as id, s.cook as cook FROM cook s";
ResultSet rs = s.executeQuery(sql);
String sql1 = "SELECT m.cooking as e FROM member m where m.id=" + myID;
ResultSet rs1 = s.executeQuery(sql1);
while (rs1.next()) {
String arr[]= new String [rs.getString("e").split("\\,").length];
}
%>
<% while (rs.next()) {
if(rs.getString("e") != null)
{
for(int i=0;i<arr.length;i++) //arr cannot be resolved here
{
arr = rs.getString("e").split("\\,"); //arr cannot be resolved here
%>
<input TYPE=checkbox NAME="cook" VALUE="<%=rs.getInt("id")%>" <%if(rs.getInt("id")==Integer.parseInt(arr[i])){out.print("checked");}%>><%=rs.getString("cook")%><BR>
<%
}
}
else
{%>
<input TYPE=checkbox NAME="cook" VALUE="<%=rs.getInt("id")%>"><%=rs.getString("cook")%><BR>
<%}
}%>
 
<%
rs.close();
s.close();
con.close();
%>	
<input type="submit" name="Submit" value="Cooking" >
</form>
 
Cooking.java
public class Cooking extends HttpServlet {
	  private static final String CONTENT_TYPE = "text/html; charset=utf-8";
	  private int myID;
	  private String []inCook;
	  private String cookappend="";
	  //Initialize global variables
	  public void init() throws ServletException {
	  }
	  //Process the HTTP Get request
	  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession(true);
		myID = 1;
		inCook = request.getParameterValues("cook");		
		for(int i=0; i<inCook.length;i++)
		{
		  cookappend += inCook[i]+",";
		}
	    try{
	      save();
	    }
	    catch (Exception e){
	    }
	  }
	  //Process the HTTP Post request
	  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	    doGet(request, response);	    
	  }
	  //Process the HTTP Put request
	  public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	  }
	  //Process the HTTP Delete request
	  public void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	  }
	  //Clean up resources
	  public void destroy() {
	  }
 
	  public void save() throws CookException
	  {
	    MySQLConnector db = new MySQLConnector();
	    Connection con = db.Getcon();
	    String upd;
	    int isWrite;
	    Statement stmt=null;
	    upd = "update member set cooking";
	    upd = upd + "='"+cookappend+"'";
	    upd = upd + " where id = '" + myID +"';";
        try
	    {
	      stmt = con.createStatement();
	      isWrite = stmt.executeUpdate(upd);
	      if (isWrite!=1)
	      {
	        System.out.print("Cannot insert to DB");
	      }
	    }
	    catch(Exception e){
	      e.printStackTrace();
	    }
	    finally
	    {
	        try {
	          if(stmt!=null)
	          stmt.close();
	          con.close();
	          }
	        catch (Exception e) {
	          throw new CookException("Cook error");
	          }
	    }
	  }  
	}

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:

Select allOpen in new window

 

by: KuldeepchaturvediPosted on 2009-02-07 at 19:10:00ID: 23581822

your servlet code is updating all the checked boxes with myID=1 everytime it gets called..

if your refresh your jsp ( press F5)  it shouldnt be duplicating the data.. if you press submit, then its different story..

for(int i=0;i<arr.length;i++) //arr cannot be resolved here

this loop will make the checkboxes  ( as many as you have in database with , separated)..

upon submitting again, all these checkboxes will get updated again...
I will see on monday if I can tweak your code to do what you require.

My saying to open a new question has nothing to do with points, when anybody searches for solutions on the board, they search by question titles.. so if you add 2 questions in single thread, it not easy to search for it.

 

by: techquesPosted on 2009-02-08 at 01:06:21ID: 23582735

Hi

I changed the code to be:

The reason for displaying multiple checkbox with same value is the checkbox depends on the for loop. When the arr.length increases, the checkbox number for the same value will increase.

However, I do not know how to fix it.

<%  
String sql = "SELECT s.id as id, s.cook as cook, m.cooking as e FROM cooking s join member m where m.id=" + myID;
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
String arr[]= new String [rs.getString("e").split("\\,").length];
int i;
for(i=0;i<arr.length;i++)
{
arr = rs.getString("e").split("\\,");
%>
<input TYPE=checkbox NAME="cooking" VALUE="<%=rs.getInt("id")%>" <%if(rs.getInt("id")==Integer.parseInt(arr[i])){out.print("checked");}%>><%=rs.getString("cook")%><BR>
<%
}
}%>

                                              
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

Select allOpen in new window

20120131-EE-VQP-002

3 Ways to Join

30-Day Free Trial

The Experts

98% positive feedback on 31,087 answers since March 2000. angeliii is a Microsoft Most Valuable Professional for his work with MS SQL Server & Develoment.

He has also proven his knowledge of Visual Basic Programming, PHP Scripting and Oracle Databases.

The Experts

97% positive feedback on 10,752 answers since July 2000. lrmoore has more than 18 years experience in the networking industry.

The six-time Mircosoft MVPs specialties include firewalls, virtual private networking, and network management.

Testimonials

"...and excellent source for support... Kind of like having your very own IT dept." Electriciansnet

Testimonials

"I was apprehensive at signing up at first. However... it has already made my life as an IT administrator much easier." JaCrews

Testimonials

"WOW! You guys have great, active, and knowledgeable people on here." moore50

Business Clients

Business Clients

In the Press

"If you’ve got a question... Experts Exchange can supply an answer.”

In the Press

"...an invaluable aid for both IT professionals and those who require tech support."

In the Press

"where IT professionals provide quick answers on just about any topic"

Business Account Plans

Loading Advertisement...