30/09/2018, 17:29

Dùng 1 đối tượng được tạo ra từ một lớp khác trong java như thế nào?

mọi người cho em hỏi e có 1 lớp myConnect{} như thế này:

package Connect;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class myConnect {
	String className = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/tailieuhoc";
	String user = "root";
	String pass ="sa";
	
	public Connection con;

	
	public void myConnectdb(){
		try{
			Class.forName(className);
			con = DriverManager.getConnection(url, user, pass);
			System.out.print("connected success!");
		}catch(ClassNotFoundException e){
			System.out.print("Not can't load Driver");
		}catch(SQLException e){			
			System.out.print("error in mySQL");
		}
	}

}

Vậy bây giờ e muốn dùng đối tượng “con” ở trên vào 1 class khác cùng package với class myConnect thì làm tn ạ?

vũ xuân quân viết 19:44 ngày 30/09/2018

theo anh thì dùng thế này

package Connect;
    class A{
    private  myConnect connect ;
    
    A(){
        connect = new myConnect();
        connect.myConnectdb();
    }
    public void getData()
        connect.con;
    }
Nguyễn Huyền viết 19:31 ngày 30/09/2018

Đoạn code mà bên class Connect em muốn dùng là như này ạ…Cái dòng ts = con.createStatement();
Làm thế nào để lấy đc cái “con” ở bên class myConnect sang đây để dùng như này đc ạ?

package Connect;

import java.sql.*;
import java.sql.Connection;

public class Connect{
	
	String table1 = "hocky1";
	String table2 = "hocky2";
	String table3 = "monhoc";

	public void showData(ResultSet rs){
		try {
			while(rs.next()){
				System.out.printf("\n%-4s %-5s %-5s\n",rs.getInt(1), rs.getString(2),rs.getString(3));
			}
		} catch (SQLException e) {
		}		
	}
	
	public ResultSet getData(){
		ResultSet rs=null;
		String sqlQue = "select * from " + table3;
		Statement ts;
		try {
			ts = con.createStatement();
			rs=ts.executeQuery(sqlQue);
		} catch (SQLException e) {
			System.out.print("error: show");
		}
		return rs;
	}
vũ xuân quân viết 19:33 ngày 30/09/2018
package Connect;
    class A{
    private  myConnect connect ;
    
    A(){
        connect = new myConnect();
        connect.myConnectdb();
    }
  
public ResultSet getData(){
	ResultSet rs=null;
	String sqlQue = "select * from " + table3;
	Statement ts;
	try {
		ts = connect.con.createStatement();
		rs=ts.executeQuery(sqlQue);
	} catch (SQLException e) {
		System.out.print("error: show");
	}
	return rs;
}
Nguyễn Huyền viết 19:34 ngày 30/09/2018

anh @masoivn cho e link tài liệu hướng dẫn cách dùng của cái này đc ko a?

Nguyễn Huyền viết 19:34 ngày 30/09/2018

cái đoạn trên mình chỉ cần
myConnect connect = new myConnect();
connect.myConnectdb();
thế cũng đc rùi a nhở?

vũ xuân quân viết 19:31 ngày 30/09/2018

anh không có link này. anh làm theo kinh nghiệm thôi.

cái đoạn trên mình chỉ cần myConnect connect = new myConnect(); connect.myConnectdb();thế cũng đc rùi a nhở?

chưa hiểu ý của em.
cái này mới là khởi tạo biến connect.

Nguyễn Huyền viết 19:35 ngày 30/09/2018

anh @masoivn ý e là: giả sử giờ e có cái phương thức này ở class connect:

public static List<TaiLieuHoc> layDanhSachDuLieu() {

		List<TaiLieuHoc> listMon = new ArrayList<TaiLieuHoc>();
		System.out.println("Danh sach mon hoc: ");
		for (int i = 0; i < listMon.size(); i++) {
			System.out.print("Học sinh thứ " + i);
			System.out.print(" - idMONHOC " + listMon.get(i).getIdMONHOC()
					+ " ten mon: " + listMon.get(i).getTenmon() + " ma mon: "
					+ listMon.get(i).getMamon() + "\n");
		}
		return null;
	}

vậy cái đoạn gọi kết nối nối tới cơ sở dữ liệu từ lớp myConnect thì e chỉ việc
myConnect connect = new myConnect();
connect.myConnectdb();
có được ko ý a?

vũ xuân quân viết 19:46 ngày 30/09/2018

như vậy cũng được.
em có thể tham khảo code anh viết mẫu ở trên.

Nguyễn Huyền viết 19:45 ngày 30/09/2018

nhưng e đã làm như vậy mà nó ko kết nối đc anh à? khi chạy nó chẳng hiện ra cái gì

Nguyễn Huyền viết 19:31 ngày 30/09/2018

cụ thể 2 cái lớp của e là:

//lớp tạo kết nối
package Connect;
import java.sql.*;

public class ConnectHelper {
	public static Connection connectToDataBase() {
		Connection con = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/tailieuhoc", "root", "sa");
			System.out.print("connected success!");
		} catch (ClassNotFoundException e) {
			System.out.print("Not can't load Driver");
		} catch (SQLException e) {
			System.out.print("error in mySQL");
		}

		return con;
	}
}

//lớp hiển thị danh sách các môn học

package Connect;

import java.util.List;
import java.util.ArrayList;
import java.sql.*;

public class SampleApp {

	  private  ConnectHelper connect ;
	    
	  void  A(){
	        connect = new ConnectHelper();
	        connect.connectToDataBase();
	    }

	public static void main(String[] args) {
SampleApp.layDanhSachDuLieu();

	}
	public static List<TaiLieuHoc> layDanhSachDuLieu() {
		
		List<TaiLieuHoc> listMon = new ArrayList<TaiLieuHoc>();
		System.out.println("Danh sach mon hoc: ");
		for (int i = 0; i < listMon.size(); i++) {
			System.out.print("Học sinh thứ " + i);
			System.out.print(" - idMONHOC " + listMon.get(i).getIdMONHOC()
					+ " ten mon: " + listMon.get(i).getTenmon() + " ma mon: "
					+ listMon.get(i).getMamon() + "\n");
		}
		return null;
	}
}
vũ xuân quân viết 19:41 ngày 30/09/2018

hàm trên của em đâu có đoạn nào lấy database vào list listMon.
list hiện tại của listMon là 0.

Nguyễn Huyền viết 19:35 ngày 30/09/2018

theo e nó là đoạn này là lấy dữ liệu để hiển thị:
System.out.print(" - idMONHOC " + listMon.get(i).getIdMONHOC()+ " ten mon: " + listMon.get(i).getTenmon() + " ma mon: "+ listMon.get(i).getMamon() + “\n”);

Nguyễn Huyền viết 19:31 ngày 30/09/2018

a nói rõ hơn cho e với ạ?

Nguyen Ca viết 19:32 ngày 30/09/2018

Câu truy vấn data(SQL) lấy dữ liệu từ database đâu em?

Nguyễn Huyền viết 19:42 ngày 30/09/2018

Em viết trong cùng 1 method như này thì hiển thị đc, nhưng e đang muốn tách phần lấy dữ liệu và phần hiển thị riêng ra thì ko đc, e đang vướng chỗ đó ạ:

public static List<TaiLieuHoc> layDanhSachDuLieu() {
	List<TaiLieuHoc> listMon = new ArrayList<TaiLieuHoc>();
	String query = "SELECT * FROM monhoc";
	TaiLieuHoc tlh=null;
	ResultSet rs = null;
	try {
		connection = ConnectHelper.connectToDataBase();
		statement = connection.createStatement();
        rs = statement.executeQuery(query);
        while (rs.next()) {
        	tlh = new TaiLieuHoc();
        
        	tlh.setIdMONHOC(rs.getInt("idMONHOC"));
        	tlh.setTenmon(rs.getString("tenmon"));
        	tlh.setMamon(rs.getString("mamon"));
            listMon.add(tlh);
        }
	}catch(Exception e){}
	
	System.out.println("\nDanh sach mon hoc: ");
	for (int i = 0; i < listMon.size(); i++) {
		System.out.printf("\n%-4s %-5s %-5s\n", listMon.get(i).getIdMONHOC(),
				listMon.get(i).getTenmon(),listMon.get(i).getMamon());
	}
	return null;
}
Nguyễn Huyền viết 19:33 ngày 30/09/2018

khi tách thì e làm thế này:

//method lấy data
public static List layDanhSachDuLieu() {
List listMon = new ArrayList();
String query = “SELECT * FROM monhoc”;
TaiLieuHoc tlh=null;
ResultSet rs = null;
try {
connection = ConnectHelper.connectToDataBase();
statement = connection.createStatement();
rs = statement.executeQuery(query);
while (rs.next()) {
tlh = new TaiLieuHoc();

        	tlh.setIdMONHOC(rs.getInt("idMONHOC"));
        	tlh.setTenmon(rs.getString("tenmon"));
        	tlh.setMamon(rs.getString("mamon"));
            listMon.add(tlh);
        }
	}catch(Exception e){}
	
	System.out.println("\nDanh sach mon hoc: ");
	for (int i = 0; i < listMon.size(); i++) {
		System.out.printf("\n%-4s %-5s %-5s\n", listMon.get(i).getIdMONHOC(),
				listMon.get(i).getTenmon(),listMon.get(i).getMamon());
	}
	return null;
}

//method hiển thị data

public static void showDanhSachDuLieu(List listMon){
System.out.println("\nDanh sach mon hoc: “);
for (int i = 0; i < listMon.size(); i++) {
System.out.printf(”\n%-4s %-5s %-5s\n", listMon.get(i).getIdMONHOC(),
listMon.get(i).getTenmon(),listMon.get(i).getMamon());
}
}

//Hàm main gọi
public static void main(String[] args) {
SampleApp.showDanhSachDuLieu(SampleApp.layDanhSachDuLieu());

}
Nguyen Ca viết 19:36 ngày 30/09/2018

System.out.printf("\n%-4s %-5s %-5s\n", listMon.get(i).getIdMONHOC(),
listMon.get(i).getTenmon(),listMon.get(i).getMamon()); cho nay ko ra duoc phai ko?

Nguyen Ca viết 19:42 ngày 30/09/2018

neu bi cho do thi do em dang tra ve null chu ko phai lst monhoc

Nguyễn Huyền viết 19:30 ngày 30/09/2018

khi viết chung 1 method vẫn câu lệnh như thế thì ra nhưng khi e tách thì ko hiển thị đc

Nguyễn Huyền viết 19:42 ngày 30/09/2018

à e có thay trong method layDanhsachDuLieu() cái return listMon; rồi nhưng vẫn ko đc. nó in mỗi dòng : “danh sach mon hoc:” thế thôi ạ

Bài liên quan
0