我正在使用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
并仅显示该特定人员密码。
我应该使用哪种查询?
答案 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;
干杯