944,021 Members | Top Members by Rank

Ad:
  • JSP Discussion Thread
  • Marked Solved
  • Views: 5472
  • JSP RSS
Feb 2nd, 2007
0

Problem adding registration data to mysql database

Expand Post »
Hi,
Im new to JSP and I am trying to add data from a simple registration page using JSP to a table in mysql,

My code seems to be working OK howerver when I check the table in MySQL Control Centre...no new records have been added,

I am able to query existing records that I inserted using MySQL Command Line Client with another JSP query page ,

I would appreciate any advice that anyone has to offer,
Thanks

My HTML form is as follows:

<form action="<%= response.encodeURL("adduser3.jsp") %>"
method="post">
<center>
<table cellpadding=4 cellspacing=2 border=0>
<th bgcolor="#CCCCFF" colspan=2>
<font size=5>USER REGISTRATION</font>
<br>
<font size=1><sup>*</sup> Required Fields</font>
</th>
<tr bgcolor="#c8d8f8">
<td valign=top>
<b>Name<sup>*</sup></b>
<br>
<input type="text" name="user" value="" size=15 maxlength=20></td>
<td valign=top>

<tr bgcolor="#c8d8f8">
<td valign=top>
<b>Password<sup>*</sup></b>
<br>
<input type="password" name="password" value="" size=15 maxlength=20>
<br></td>

</tr>
<tr bgcolor="#c8d8f8">
<td valign=top>
<b>Email<sup>*</sup></b>
<br>
<input type="text" name="email" size=25 value=""
maxlength=125></td>
<td valign=top>

</tr>
<tr bgcolor="#c8d8f8">
<td valign=top>
<b>Message<sup>*</sup></b>
<br>
<input type="text" name="message" size=50 value=""
maxlength=150></td>
<td valign=top>

<br>
</tr>


<tr bgcolor="#c8d8f8">
<td align=center colspan=2>
<input type="submit" value="Submit"> <input type="reset"
value="Reset">
</td>
</tr>
</table>
</center>
</form>



My JSP for adding a user is as follows:

<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>

<%@ page import="java.sql.*" %>

<%
Connection con = null;
Statement stmt = null;
ResultSet rs = null;



String queryText = "insert into users values(\"" +
request.getParameter("user") + "\",\"" +
request.getParameter("password") + "\",\"" +
request.getParameter("email") + "\",\"" +
request.getParameter("message") + "\")";

try {
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost/register",
"root", "rootpassword");
stmt = con.createStatement();
rs = stmt.executeQuery(queryText);
} catch (Exception e) { }

response.sendRedirect("Successreg.jsp");
%>
Reputation Points: 10
Solved Threads: 0
Newbie Poster
hegRT is offline Offline
8 posts
since Feb 2007
Feb 3rd, 2007
0

Re: Problem adding registration data to mysql database

executeQuery cannot be used to execute anything except select statements.

And you shouldn't use scriptlet blocks in JSPs, it's considered very bad, leads to hard to read and harder to maintain code.
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Feb 3rd, 2007
0

Re: Problem adding registration data to mysql database

And another problem: your insert (if it's executed at all, which is unlikely) doesn't get comitted to the database.
That means it's visible only to the current database session and will be undone when that session terminates.

I suggest you follow Sun's JDBC tutorial or read a GOOD introductory text about Java and JDBC.
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004
Feb 3rd, 2007
0

Re: Problem adding registration data to mysql database

Thanks for your advice jwenting,
I got it working using this code

[code]

<%@ page import="javax.servlet.*" %>
<%@ page import="javax.servlet.http.*" %>
<%@ page import="java.sql.*" %>

<%



Class.forName("org.gjt.mm.mysql.Driver");

java.sql.Connection connection =

java.sql.DriverManager.getConnection
("jdbc:mysql://localhost/register","root", "rootpassword");

String query = "INSERT INTO users VALUES (?,?,?,?)";


java.sql.PreparedStatement Stmt =

connection.prepareStatement(query);

Stmt.setString(1,request.getParameter("email"));
Stmt.setString(2,request.getParameter("user"));
Stmt.setString(3,request.getParameter("password"));
Stmt.setString(4,request.getParameter("message"));

Stmt.executeUpdate();

Stmt.close();
connection.close();

response.sendRedirect("Successreg.jsp");

%>
Reputation Points: 10
Solved Threads: 0
Newbie Poster
hegRT is offline Offline
8 posts
since Feb 2007
Feb 4th, 2007
0

Re: Problem adding registration data to mysql database

You should really do some exception handling in there.

You MUST ensure that your database resources are ALWAYS released, which means placing the close statements in a finally clause and all other code using them in a try/catch block.

Otherwise you're going to end up with connection starvation when you get exceptions, and can bring the server down.
Maybe not much of a problem for you yet, but it's never to early to start doing the right thing.

And refactor that database code into a servlet, it does NOT belong in a JSP.
Team Colleague
Reputation Points: 1658
Solved Threads: 331
duckman
jwenting is offline Offline
7,719 posts
since Nov 2004

This thread is solved

Either the thread starter or a moderator has marked this thread as solved. You can most likely trust the responses and answers given. There is most likely no reason for any further responses to be posted here. If you have a related question, please start a new thread in this forum instead.

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in JSP Forum Timeline: how to show java out puts in web browser
Next Thread in JSP Forum Timeline: JSP and Servlet Display of text in a text field





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC