0

SOAP WebServices を使用して MySQL データベース接続用の Android プロジェクトを開発しています。

私のデータベースには、3 つのフィールド (ユーザー名、パスワード、電子メール) があります。

ここでは、3 人のユーザーの値を挿入します。ログイン フォームの Web サービス コードを作成しました。

ログインフォームのコードは次のとおりです。

package com.userlogin.ws;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class Login {
    public String authentication(String userName, String password) {

        String retrievedUserName = "";
        String retrievedPassword = "";
        String status = "";
        try {

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/androidlogin", "root", "");
            PreparedStatement statement = con.prepareStatement("SELECT * FROM user WHERE username = '" + userName + "'");
            ResultSet result = statement.executeQuery();

            while (result.next()) {
                retrievedUserName = result.getString("username");
                retrievedPassword = result.getString("password");
            }

            if (retrievedUserName.equals(userName) && retrievedPassword.equals(password)) {
                status = "Success!";

            } else {
                status = "Login fail!!!";
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        return status;

    }

}

忘れたパスワード。Web サービス コードは次のとおりです。

package com.userlogin.ws;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.PreparedStatement;

public class ForgetPassword {
    public String customerData(){
        String customerInfo = "";
        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/androidlogin","root","");
            //Find customer information where the customer ID is maximum
            PreparedStatement statement =  con.prepareStatement("SELECT * FROM user WHERE username = (SELECT username FROM user)");
            ResultSet result = statement.executeQuery();

            while(result.next()){
                customerInfo = customerInfo + result.getString("username") + "&" + result.getString("password") + "&"+result.getString("email");
                //Here "&"s are added to the return string. This is help to split the string in Android application
            }
        }

        catch(Exception exc){
            System.out.println(exc.getMessage());
        }

        return customerInfo;
    }

}

パスワードの忘れをクリックすると、アプリケーションは次のActivity.

次にActivity、メール、ID を要求する必要があります。

メールIDを入力した後、さらに別のパスワードに進み、Activityその特定の人のパスワードのみを表示する必要があります。

どのクエリを使用すればよいですか?

4

3 に答える 3

0

最大IDのユーザーを取得したい場合:

SELECT max(id) as Max, id FROM user having id = Max

また:

SELECT * FROM user ORDER BY id DESC LIMIT 1;

編集:

編集された質問を理解した場合*私が確信していないこと)、あなたの問題はここにあります:

"SELECT * FROM user WHERE username = (SELECT username FROM user)"

このコードはデータベース内のすべてのユーザーを選択します。そのため、コードは 1 人のユーザーに対してのみ機能します。

パスワードを忘れた場合、指定された電子メールでユーザーのパスワードを変更したいので、次のようになります。

"SELECT * FROM user WHERE email=" + usersemail
于 2012-07-19T07:20:04.650 に答える
0

特定のユーザーの詳細を取得するには、

SELECT * FROM user WHERE username = 'XXX(Enter the name of the user)'

任意のユーザーの詳細を取得するには

SELECT * FROM user limit 1

電子メールを使用して特定のユーザーのパスワードを取得するには

SELECT password FROM user where email = "XXX(Enter the email of the user)"
于 2012-07-19T07:13:36.013 に答える
0

質問に基づいて正確に何を意味するかはわかりませんでしたが、コードに記載されているコメントに基づいて

顧客 ID が最大の場合の顧客情報を検索します

次に、最新のユーザーのユーザー情報を探しています (自動インクリメント ユーザー ID があり、次のようなものを使用できると仮定します。

SELECT * FROM user AS u1, (SELECT MAX(id) AS maxid FROM user) AS m1 WHERE u1.id=m1.maxid;

または、サブセレクトなしでそれを行うことができます

SELECT * FROM user ORDER BY id DESC LIMIT 1;

乾杯

于 2012-07-19T07:23:05.167 に答える