如何通过调用soap Web服务使用mysql获取用户的详细信息?

时间:2012-07-19 07:06:55

标签: android mysql ksoap2

我正在使用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;

    }

}

遗忘密码。网络服务代码是:

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;
    }

}

如果我点击 forgetpassword ,应用程序应该启动下一个Activity

下一个Activity应该要求发送电子邮件,ID ..

输入邮件ID后,它应继续进入另一个Activity并仅显示该特定人员密码。

我应该使用哪种查询?

3 个答案:

答案 0 :(得分: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)"

答案 1 :(得分: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)"

此代码选择数据库中的所有用户,这就是代码仅适用于一个用户的原因。

在忘记密码中,您想要使用给定的电子邮件更改用户的密码,因此它应该是这样的:

"SELECT * FROM user WHERE email=" + usersemail

答案 2 :(得分:0)

无法根据问题确切地说出你的意思,但是基于你在代码中的评论陈述

  

查找客户ID最大客户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;

干杯