i have a jsp it has two fileds..mobileno and password..when i enterd values its storing in DB.But when iam retriving its retriving and comparing only with newly inserted values only.. it is comparing only last inserted values in Db only ..here is my code..

package com;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class SearchServlet extends HttpServlet
{


private ServletConfig config;


public void init(ServletConfig config)
throws ServletException{
this.config=config;
}
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{


PrintWriter out = response.getWriter();
String connectionURL = "jdbc:mysql://localhost/test";
Connection connection=null;
ResultSet rs;
String mobileno=request.getParameter("mobileno");
String password=request.getParameter("password");
response.setContentType("text/html");
HttpSession ses=request.getSession(true);
try {
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
// Get a Connection to the database
connection = DriverManager.getConnection(connectionURL, "root", "password");
//Add the data into the database
String sql = "select mobileno,password from newuser";
Statement s = connection.createStatement();
s.executeQuery (sql);
rs = s.getResultSet();
while (rs.next ()){
mobileno=rs.getString("mobileno");
password=rs.getString("password");
}
rs.close ();
s.close ();
}catch(Exception e){
System.out.println("Exception is ;"+e);
}


if(mobileno.equals(request.getParameter("mobileno"))
&& password.equals(request.getParameter("password")))
{


//    ses.setAttribute("MOBILENO",mobileno);
//   ses.setAttribute("PASSWORD",password);


//    mobileno = (String)ses.getAttribute("MOBILENO");
out.print("<h1>You are Already Registerd </h1>");
}


else
{


out.println("<h1>You are not a Valid User Please Register</h1>");
out.println("<a href='newregister.jsp'><br>Register Here!!</a>");


}}


public void destroy()
{
}



}

Recommended Answers

All 20 Replies

As far as your problem goes you need to put a "where" clause in your select query like this:-

select password 
from newuser
where mobileno='<the value that you got in your request>'

So your "while" will be entered only if the mobile no is valid (and if valid give you the password of only that "mobileno" )and you just have to check whether the "password" is valid in your "if" condition.

Also I can see that you are overwriting the value in the variables "mobileno" and "password", first you are storing in the value you get from the request here:-

String mobileno=request.getParameter("mobileno");
String password=request.getParameter("password");

And then you overwrite them if the corresponding values you get from the database here:-

while (rs.next ()){
  mobileno=rs.getString("mobileno");
  password=rs.getString("password");
}

Also another suggestion do not use user mysql "root" login to do such trivial tasks. Use root is only for when you have to perform administrative tasks on your database, for normal use create another user account.

but i want to compare dynamically ..if i give particular number then it displays those results.. but if i give another number then i have to change that in servlet also...i want dynamically if mobilenumber enterd in jsp then it should be checked with db and comapres with enterd value.. if its there dispaly already existed if not register..how i should i do this?

This is your post No: 10 and still you are either too lazy or are just plain ignorant to read the rules I do not know. But please read this on how to use code-tags.

As far as your problem goes you need to put a where clause in you select query like this:-

select password 
from newuser
where mobileno='<the value that you got in your request>'

So your while will be entered only if the mobile no is valid (and if valid give you the password of only that "mobileno" )and you just have to check whether the "password" is valid in your if condition.

Also I can see that you are overwriting the value in the variables "mobileno" and "password", first you are storing in the value you get from the request here:-

String mobileno=request.getParameter("mobileno");
String password=request.getParameter("password");

And then you overwrite them if the corresponding values you get from the database here:-

while (rs.next ()){
  mobileno=rs.getString("mobileno");
  password=rs.getString("password");
}

end quote.

but i want to compare dynamically ..if i give particular number then it displays those results.. but if i give another number then i have to change that in servlet also...i want dynamically if mobilenumber enterd in jsp then it should be checked with db and comapres with enterd value.. if its there dispaly already existed if not register..how i should i do this?

If you would just merge my query with your code wouldn't it do the same or you need me to spoon feed you the exact java syntax, then here it is :-

String sql = "select password from newuser where mobileno=" + mobileno;

you need me to spoon feed you the exact java syntax

... there is no spoon, Neo :)

as for mahaboob Basha:
Stephen84s already told you how to compare it dynamically. read the answers before disagreeing with them.

i tried evry thing possibly i can... still its not working.. plz dont get angry .. iam a student we r doing a project for this i have to do this..plz help me in this...iam sending my total code..
SearchServlet:
____________

package com;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SearchServlet extends HttpServlet
{

private ServletConfig config;

public void init(ServletConfig config)
throws ServletException{
this.config=config;
}
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{

PrintWriter out = response.getWriter();
String connectionURL = "jdbc:mysql://localhost/basha";
Connection connection=null;
ResultSet rs;

String mobileno=request.getParameter("mno");
String password=request.getParameter("pwd");
response.setContentType("text/html");
HttpSession ses=request.getSession(true);

try {
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
// Get a Connection to the database
connection = DriverManager.getConnection(connectionURL, "root", "3ptec");
//Add the data into the database
String sql = "select mobileno,password from newuser where mobileno='"+ mobileno + "'and password='"+ password + "' " ;


Statement s = connection.createStatement();
rs=s.executeQuery (sql);
rs = s.getResultSet();


while (rs.next ())
{
mobileno=rs.getString("mobileno");
password=rs.getString("password");
out.println("MOBILENO=" +mobileno );
out.println("PASSWORD=" +password );


}

rs.close ();
s.close ();


}

catch(Exception e)
{
System.out.println("Exception is ;"+e);
}


if(mobileno.equals(request.getParameter("mno")) && password.equals(request.getParameter("pwd")))
{

out.print("<h1>You are Already Registerd </h1>");
}


else
{

out.println("<h1>You are not a Valid User Please Register</h1>");
out.println("<a href='newregister.jsp'><br>Register Here!!</a>");
}

}

}

search.jsp
----------------
<%@ page language="java" %>
<h2><font color="#0000FF"><b>Login&nbsp;</b></font>

<br>
<br>
Please enter MobileNumber and password</h2>
<form name="frm" action="/SearchServlet" method="Get" >
<b>
MobileNo :&nbsp;</b><input type="text" name="mno" value=""/><br>
<b>
Password :&nbsp; </b><input type="password" name="pwd" value=""/>
&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;<input type="submit" value="Check" />
<H1>Newuser </H1>
<P><A href="newregister.jsp">Signup</A><BR>
</p>
</form>

table
---------

mysql> create table newuser(mobileno char(20),password char(20));
Query OK, 0 rows affected (0.08 sec)

mysql> insert into newuser values('9999999999','Peter');
Query OK, 1 row affected (0.03 sec)


where iam doing the mistake?.......................


If you would just merge my query with your code wouldn't it do the same or you need me to spoon feed you the exact java syntax, then here it is :-

String sql = "select password from newuser where mobileno=" + mobileno;

Am not looking at that post until you start using code-tags to wrap your code. I already mentioned it to you in my first post, but you just wish to keep ignoring it and please start writing your posts in English. The SMS speech and the "..."s you are using are irritating, I guess that would not be too much to ask.

Iam ..sorry.. really i dont know how to use [code] tags .. plz i will go through those code tags it now...from next time i will follow code tags definately... plz check that this time...

Iam ..sorry.. really i dont know how to use [code] tags .. plz i will go through those code tags it now...from next time i will follow code tags definately... plz check that this time...

No I am not, I gave you the link in my first post, if you cant find it then see this :-
http://www.daniweb.com/forums/announcement9-3.html

Edit your post and add the code tags to it, it should not take more than a few minutes.
And PLEASE write the full words why do you eat up sentences with the "..." and the SMS language(used with Mobile handsets) when you have a complete keyboard in front of you.

And you have not even mentioned what is going wrong now, after you changed your query.

tried evry thing possibly i can... still its not working.. plz dont get angry .. iam a student we r doing a project for this i have to do this..plz help me in this...iam sending my total code..
SearchServlet:
____________

package com;
import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SearchServlet extends HttpServlet
{

private ServletConfig config;

public void init(ServletConfig config)
throws ServletException{
this.config=config;
}
public void service(HttpServletRequest request, HttpServletResponse response) 
throws ServletException,IOException{

PrintWriter out = response.getWriter();
String connectionURL = "jdbc:mysql://localhost/basha";
Connection connection=null;
ResultSet rs;

String mobileno=request.getParameter("mno");
String password=request.getParameter("pwd");
response.setContentType("text/html");
HttpSession ses=request.getSession(true);

try {
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
// Get a Connection to the database
connection = DriverManager.getConnection(connectionURL, "root", "3ptec"); 
//Add the data into the database
String sql = "select mobileno,password from newuser where mobileno='"+ mobileno + "'and password='"+ password + "' " ;


Statement s = connection.createStatement();
rs=s.executeQuery (sql);
rs = s.getResultSet();


while (rs.next ())
{
mobileno=rs.getString("mobileno");
password=rs.getString("password");
out.println("MOBILENO=" +mobileno );
out.println("PASSWORD=" +password );


}

rs.close ();
s.close ();


}

catch(Exception e)
{
System.out.println("Exception is ;"+e);
}


if(mobileno.equals(request.getParameter("mno")) && password.equals(request.getParameter("pwd")))
{

out.print("<h1>You are Already Registerd </h1>");
}


else 
{

out.println("<h1>You are not a Valid User Please Register</h1>");
out.println("<a href='newregister.jsp'><br>Register Here!!</a>");
}



} 

}

search.jsp
----------------

<%@ page language="java" %>
<h2><font color="#0000FF"><b>Login&nbsp;</b></font>

<br>
<br>
Please enter MobileNumber and password</h2>
<form name="frm" action="/SearchServlet" method="Get" >
<b>
MobileNo :&nbsp;</b><input type="text" name="mno" value=""/><br>
<b>
Password :&nbsp; </b><input type="password" name="pwd" value=""/>
&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;<input type="submit" value="Check" />
<H1>Newuser </H1>
<P><A href="newregister.jsp">Signup</A><BR>
</p>
</form>

table
---------

mysql> create table newuser(mobileno char(20),password char(20));
Query OK, 0 rows affected (0.08 sec)

mysql> insert into newuser values('9999999999','Peter');
Query OK, 1 row affected (0.03 sec)

where iam doing the mistake?.......................

No I am not, I gave you the link in my first post, if you cant find it then see this :-
http://www.daniweb.com/forums/announcement9-3.html

Edit your post and add to the code tags to it, it should not take more than a few minutes.
And PLEASE write the full words why do you eat up sentences with the "..." and the SMS language(used with Mobile handsets) when you have a complete keyboard in front of you.

Tell us exactly whats going wrong and how do you want the servlet to behave ?

where iam doing the mistake?.......................

where to begin??? first of all, you don't seem to do any effort to tell us what you're application is doing wrong.

secondly... let's look at some lines of your code:

String mobileno=request.getParameter("mno");
String password=request.getParameter("pwd");

....

Statement s = connection.createStatement();
rs=s.executeQuery (sql);
rs = s.getResultSet();

while (rs.next ())
{
mobileno=rs.getString("mobileno");
password=rs.getString("password");
out.println("MOBILENO=" +mobileno );
out.println("PASSWORD=" +password );
}

might be easier to use different variables for those

if(mobileno.equals(request.getParameter("mno")) && password.equals(request.getParameter("pwd")))
{
out.print("<h1>You are Already Registerd </h1>");
}
else
{
out.println("<h1>You are not a Valid User Please Register</h1>");
out.println("<a href='newregister.jsp'><br>Register Here!!</a>");
}

you say this is your entire code? maybe I've missed something, but I don't see where you put the parameters pwd and mno in request, only where you try to extract them.

When you are creating a new user, are you checking if the user already exists before performing an INSERT?

Perhaps the mobileNo should be declared as Primary Key. Then if you try to insert a new row that has the same mobileNo it will throw an SQLException.

Or if you unfamiliar with this, you can try quering with mobileNo and if the query returns something don't INSERT.

Tha above are suggestions and questions for the logic used in the: newregister.jsp

when i enter values in jsp form it has to check whether those values are present in database or not... if not present they nedd to register..i stored multiple values in Db but when iam retriving the values using resultset it is retreving the lastrow (ie;values which are inserted recently..) its not retriving other values.. here its retriving only....... 9929126444 | sdgssha | this value only..

mysql> select * from newuser;
------------+----------+
mobileno | password |
------------+----------+
943434343 | rocky |
976129126 | abced |
9966291264 | sssha |
9929126444 | sdgssha |
------------+----------+

Ok... Now I am going to just assume how you wish the servlet should work, If you have an already registered user, you want to just display "You are a valid user" and if the user is invalid you want to display "Please register !!".

So lets see where you could be going wrong:-

String sql = "select mobileno,password from newuser where mobileno='"+ mobileno + "'and password='"+ password + "' " ;

Now the above query would return you a database record if and only if you got a valid user with correct mobile number and password hitting your servlet.

So instead of while(rs.next()) you should instead opt for if(rs.next()) like this :-

if (rs.next ()) {
  // If we get a record it means the (mobileno & password) 
  // combination is already valid.
  // so just close your statements and do whatever you want
  // for a valid user here.
} else {
  // No records found for user in table, so user is invalid.
  // So put the appropriate message for invalid user and
  // the registration link here
}
commented: Nice call +3

And now that I looked at it, Yes the problem IS the 'while'. I was about to say that it made no difference even if it was 'if',
BUT:
When you use While and the query doesn't return anything, the variables: 'mobileno' that are inside the while don't change value, so when later you do: if(mobileno.equals(request.getParameter("mno")) && password.equals(request.getParameter("pwd"))) It will return true even if there is no entry in the database because you use the old values that 'mobileno'

So use the if statement

Use of code tags [code] YOUR CODE HERE [/code]
or
[code=Java]YOUR CODE HERE [/code]

commented: kind of late dont you think, I already blackmailed him in to using them :P +3

Hi....Thanks a lot now its working fine.... u really helped me a lot.. i was struck in this from the last 4 days...thanks once again.......


Ok... Now I am going to just assume how you wish the servlet should work, If you have an already registered user, you want to just display "You are a valid user" and if the user is invalid you want to display "Please register !!".

So lets see where you could be going wrong:-

String sql = "select mobileno,password from newuser where mobileno='"+ mobileno + "'and password='"+ password + "' " ;

Now the above query would return you a database record if and only if you got a valid user with correct mobile number and password hitting your servlet.

So instead of while(rs.next()) you should instead opt for if(rs.next()) like this :-

if (rs.next ()) {
  // If we get a record it means the (mobileno & password) 
  // combination is already valid.
  // so just close your statements and do whatever you want
  // for a valid user here.
} else {
  // No records found for user in table, so user is invalid.
  // So put the appropriate message for invalid user and
  // the registration link here
}

Hi.. now its working fine... thanks a lot for helping me in this issue,,, i was struck in this from the last 4 days... once again thanks a lot...

And now that I looked at it, Yes the problem IS the 'while'. I was about to say that it made no difference even if it was 'if',
BUT:
When you use While and the query doesn't return anything, the variables: 'mobileno' that are inside the while don't change value, so when later you do: if(mobileno.equals(request.getParameter("mno")) && password.equals(request.getParameter("pwd"))) It will return true even if there is no entry in the database because you use the old values that 'mobileno'

So use the if statement

If the issue is solved, please mark this post as solved.

Thank you

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.