2013-12-11 60 views
-4

問題肯定是範圍之內,但是,我有問題搞清楚爲什麼,因爲我宣佈,被存儲在循環外的信息訪問數據庫信息的循環內,並且存儲外

public Member searchMember (String email) { 

    int Sid = 0; 
    String name =""; 
    String adr = ""; 
    String phone = ""; 
    String email2 = ""; 
    String pass = ""; 
    boolean status =false; 
    Member a = new Member(name,adr,phone,email2,pass); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 
     con = DriverManager.getConnection("jdbc:mysql://compsi:3306/mcrowley","mcrowley","700463874"); 
     Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
     System.out.println(email); 
     String query = "Select id,name,address,phoneNum,email,password,LoginStatus From member WHERE email Like '%"+email+"%' "; 
     ResultSet results = stmt.executeQuery(query); 
     System.out.println("Before while loop"); 
     int count = 0; 
     while (results.next() || count == 0) { 
      if (count == 0) 
      results.absolute(1); 

      System.out.println("Start while loop"); 
      Sid = results.getInt(1); 
      //System.out.println(Sid+" this is test in jdbc"); 
      name = results.getString(2); 
      //System.out.println(name+" this is test in jdbc"); 
      adr = results.getString("address"); 
      phone = results.getString("phoneNum"); 
      email2 = results.getString("email"); 
      pass = results.getString("password"); 
      int stat = results.getInt("loginStatus"); 
      if (stat == 0) { 
       status = false; 
      } 
      else { 
       status = true; 
      } 
      count++; 
      if (!results.next()) { 
       a.setName(name); 
       a.setAddress(adr); 
       a.setPhoneNumber(phone); 
       a.setEmail(email2); 
       a.setPassword(pass); 
       a.setId(Sid); 
       a.setStatus(status); 
       return a; 
      } 
     } 
     System.out.println("After while loop"); 
     a.setName(name); 
     a.setAddress(adr); 
     a.setPhoneNumber(phone); 
     a.setEmail(email2); 
     a.setPassword(pass); 
     a.setId(Sid); 
     a.setStatus(status); 
     //create object & print 
     stmt.close(); 
     con.close(); 
     return a; 

    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return a; 
} 
+3

有什麼問題?請說明它.... – Blub

回答

0

所以基本上變量這聽起來像你需要關於the scope of variables的進修課程。

本質上,你不會來與代碼,你想知道如何解決。但相反,你正在滾動,因爲你認爲它應該而不是工作。

以下是我記得:每一個範圍有權訪問本身以及這是它的直接父範圍中聲明的變量。也就是說,父範圍無法讀取和修改其即將發出的歡呼聲。

因此,基本上,在回答你的問題是,你的直覺是不正確。變量作用域並不像你認爲的那樣工作。