2012-10-30 55 views
0

我有一个连接到mySQL数据库的肥皂web服务。它有两个方法,一个是insert(),另一个是verify()。第一个用户可以输入姓名,电子邮件和密码等数据。它成功保存了数据库中的记录。肥皂网服务 - 比较输入的数据与mysql数据库的数据

但是,在编写验证方法时遇到问题。它具有输入参数,电子邮件和密码。它必须将输入的数据与存储在数据库中的数据进行比较,如果在mysql数据库中找不到匹配项,则返回“registered”或“not registered”。我有写代码的问题。能否请你帮忙,对jdbc和java web服务是新手。我正在使用netbeans。 非常感谢。

这里是我的代码:

@WebMethod(operationName = "insert") 
    public String insert(@WebParam(name = "name") String name, 
    @WebParam(name = "email") String email, 
    @WebParam(name = "password") String password { 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con =   DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234"); 
     PreparedStatement st = con.prepareStatement("insert into register values(?,?,?)"); 
     st.setString(1, name); 
     st.setString(2, email); 
     st.setString(3, password); 
     st.executeUpdate(); 
    } catch (Exception e) { 
     System.out.println(e.getMessage()); 
    } 
    return "record inserted"; 
} 

/** 
* Web service operation 
*/ 
@WebMethod(operationName = "Verify") 
public String CheckUser(@WebParam(name = "email") String email, 
@WebParam(name = "password") String password) { 

     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234"); 

If 
// problems to write this statement!!! I need to compare the username and password 
// with some select * from register where password == @password and email == @email? 

return "Registered user"; 
else 
    return "Not registered"; 

} 
+0

你知道如何做选择吗?或者你有选择,但你不知道如何使用它从Java? (另外,我希望你没有在数据库中清楚地存储密码)。 – Pablo

+0

我不会将它存储在清除我将使用sha1或md5加密它。 我只是想先让它工作。不,我很困惑,我不知道如何写它。 :( 请帮我。 – Div

+0

你能否请分享你的代码? – Prateek

回答

0

这个例子可以工作(您可能需要更改查询列名)。此外,您应该关闭插入方法中的连接,与本示例相同。

Connection con = null; 

    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "1234"); 
     PreparedStatement st = con.prepareStatement("select 1 from register where password = ? and email = ? and name = ?"); 
     st.setString(1, password); 
     st.setString(2, email); 
     st.setString(3, name); 

     ResultSet result = st.executeQuery(); 

     if (result.next()) { //.next() returns true if there is a next row returned by the query. 
      return "Registered user"; 
     } else { 
      return "Not registered"; 
     } 


    } catch (Exception e) { 
     //TODO manage the exception. 
    } finally { 
     if (con != null) { 
      try { 
       con.close(); 
      } catch (SQLException e) {} 
     } 
    } 
+0

谢谢soooo soooo多,确实我不得不修改列。 但它工作! :D – Div

+0

我只是想问一件事,说在我的数据库中我有3列:名称/电子邮件/密码和验证()我只有作为参数:电子邮件和密码。当我写: PreparedStatement st = con.prepareStatement(“select 1 from register where password =?and email =?”); st.setString(1,password); st.setString(2,email); 它不起作用! :( – Div

0

检查此URL可能对你有用

http://www.roseindia.net/jdbc/jdbc-mysql/SelectRecords.shtml 
+0

回答:) – Div