0

mySQLデータベースに接続されているsoapWebサービスがあります。2つのメソッドがあります。1つはinsert()で、もう1つはverify()です。1つ目は、ユーザーが名前、電子メール、パスワードなどのデータを入力できるようにします。これにより、レコードがデータベースに正常に保存されます。

ただし、verifyメソッドの記述に問題があります。入力パラメータとして、電子メールとパスワードがあります。入力されたデータをデータベースに保存されているデータと比較し、mysqlデータベースで一致するものが見つからない場合は、「登録済み」または「未登録」を返す必要があります。コードの記述に問題があります。jdbcおよびjavaWebサービスを初めて使用する場合は、助けてください。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";

}
4

1 に答える 1

0

この例は機能する可能性があります(クエリで列名を変更する必要がある場合があります)。また、この例と同じように、insertメソッドで接続を閉じる必要があります。

    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) {}
        }
    }
于 2012-10-30T17:04:41.340 に答える