Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 2 của 2
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    [HELP]-Lỗi không nhận giá trị khi gọi hàm dựng

    Mã:
    import java.sql.*;
    import java.util.Date;
    import java.util.*;
    
    public class Test {
        private int accNo, idNo;
        private String accName, dob, password;
        private double balance;
        private Date lastAccess;
    //-----------------------------------------------------------------------------
        public Test() throws Exception {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
        }
    //-----------------------------------------------------------------------------
        public Test(int matk) throws Exception {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://VNZYNIT:1433/BANK", "sa", "abc123");
            PreparedStatement ps = con.prepareStatement("Select AccName,Dob,IdNo,Password,Balance, LastAccess from Account where AccNo = ?");
            ps.setInt(1, matk);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                accNo = matk;
                accName = rs.getString(1);
                dob = rs.getString(2);
                idNo = rs.getInt(3);
                password = rs.getString(4);
                balance = rs.getDouble(5);
                lastAccess = rs.getDate(6);
                System.out.println("Acc = " + accNo + "
    Ho ten: " + accName + 
                        "
    Ngay Sinh: " + dob + "
    CMND: " + idNo + "
    Balance: " + balance + "
    LastAccess: " + lastAccess );
            } else {
                System.out.println("Loi doc du lieu!");
            }
            con.close();
        }
    //---------------------------------------------------------------------------
        public Test login(int matk, String mk) throws Exception {
            Connection con = DriverManager.getConnection("jdbc:jtds:sqlserver://VNZYNIT:1433/BANK", "sa", "abc123");
            PreparedStatement ps = con.prepareStatement("SELECT AccName FROM Account WHERE AccNo=? and Password = ?");
            ps.setInt(1, matk);
            ps.setString(2, mk);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                System.out.println("Dang nhap Thanh Cong");
                con.close();
                return new Test(matk);
            }
            throw new Exception("Sai ma tai khoan hoac pass");
        }
    //--------------------------------------------------------------------------
        public static void main(String[] args) throws Exception {
            Test a = new Test();
            a.login(1000, "1234");
            System.out.println("--------
    "+a.balance);
        }
    }
    E đang viết đoạn code trên để đăng nhập thông qua CSDL.
    Sau khi đăng nhập xong mình khởi tạo hàm dựng 1 đối số nhưng sau khi khởi tạo xong thì các biến không nhận giá trị khi được gọi biến lần sau

    Trong trường hợp e gọi trực tiếp hàm dựng thì nó nhận giá trị cho những lần gọi sau.

    E k hiểu vì sao nó lại bị lỗi thế, mong các ace xem và chỉ giúp e.
    E Cám ơn [IMG]images/smilies/smile.png[/IMG]

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn thử trace theo hàm main và xem nó đã làm những gì, có gán giá trị cho biến nào không mà lại muốn in ra balance ?
    Chú ý khi bạn new lên bằng constructor không tham số, và khởi tạo hoàn toàn khác với constructor có tham số nhé.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •