2012-07-19 111 views
0

我正在爲使用SOAP WebServices的MySQL數據庫連接開發一個Android項目。如何通過調用soap webservices使用mysql獲取用戶的詳細信息?

在我的數據庫中,我有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,並只顯示特定人的密碼。

我應該使用哪個查詢?

+0

上面的代碼是成功的時候,只有1個用戶的詳細信息那裏在我的MySQL數據庫。它不是成功的更多的user.so請幫助我 – 2012-07-19 07:32:54

回答

0

要獲得特殊用戶的詳細信息,

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

要得到任何一個用戶的信息使用電子郵件

SELECT password FROM user where email = "XXX(Enter the email of the user)" 
0

如果你想獲得

SELECT * FROM user limit 1 

獲得對具體用戶密碼具有最大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 
+0

確定看看我編輯的答案 – shem 2012-07-19 08:10:18

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; 

乾杯

相關問題