1. Trang chủ
  2. » Công Nghệ Thông Tin

Lập trình java phần 2

59 208 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 59
Dung lượng 469,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong ví dụ này Tôi muốn demo cho các bạn các thuật toán sắp xếp bằng ngôn ngữ JavaNếu như không dùng đa tiến trình thì giao diện của bạn sẽ bị “Đơ”Source code: http:www.mediafire.com?oee8cznyolwng5gFile Jar để chạy: http:www.mediafire.com?03sxkpwa40icrp3Ở đây Tôi đã làm xong thuật toán Bubble Sort, các thuật toán khác Tôi viết sẵn hàm, các bạn bắt chước Tôi làm để sửa lại cho đúng thuật toán sắp xếp khác.

Trang 1

Lập Trình Java 2

Trong ví dụ này Tôi muốn demo cho các bạn các thuật toán sắp xếp bằng ngôn ngữ Java

Nếu như không dùng đa tiến trình thì giao diện của bạn sẽ bị “Đơ”

Source code: http://www.mediafire.com/?oee8cznyolwng5g

File Jar để chạy: http://www.mediafire.com/?03sxkpwa40icrp3

Ở đây Tôi đã làm xong thuật toán Bubble Sort, các thuật toán khác Tôi viết sẵn hàm, các bạn bắt chước Tôi làm để sửa lại cho đúng thuật toán sắp xếp khác.

Hình minh hoạ thuật toán đang tiến hành :

Hình minh họa đã hoàn thành thuật toán:

Trang 2

Các thuật toán Tôi đang để trống là:

public synchronized void doSelectionSort()

Trang 3

tới tranduythanh@hui.edu.vn Tôi sẽ giải thích những phần các bạn chưa hiểu.

——————————————————————————————————

—————

Trang 4

Phần 1: Kết nối Microsoft Access bằng Java

Phần 2: Kết nối Microsoft SQL Server 2008 bằng Java

Phần 3: Kết nối MySql bằng Java

——————————————————————————————————

—————

Topic này Tôi muốn hướng dẫn các bạn cách kết nối tới nhiều cơ sở dữ liệu khác nhau bằng ngôn ngữ lập trình Java

Các bạn sẽ được học đầy đủ trong môn Lập Trình Java 2.

Trong Topic này Tôi đặt ra một trường hợp là: Chúng ta có nhiều hệ cơ sở dữ liệu khác nhau ví dụ như Ms Access, SqlServer, MySQL… làm cách nào để viết các class Java thành các thư viện để kết nối tới các hệ cơ sở dữ liệu này?

Có rất nhiều mô hình, ở đây Tôi chỉ nhấn mạnh vào cách viết class để kết nối tới các CSDL mà thôi (không đề cập mô hình nào cả) Khi bạn rành rồi thì có thể sử dụng ORM hibernate để coding hoặc bất cứ loại nào Nhưng trước tiên các bạn phải biết những kỹ thuật căn bản trước đã.

——————————————————————————————————

————————————

Ph

ầ n 1: Kết nối Microsoft Access bằng Java

Nếu bạn sử dụng MS Access 2003(đuôi là mdb) thì không phải cài đặt thêm Driver

Còn nếu như bạn sử dụng MS Access 2007, 20120 (đuôi là accdb) thì các bạn cài đặt thêm:

2007 Office System Driver: Data Connectivity Components :

http://www.microsoft.com/download/en/details.aspx?id=23734

Những class nào bạn cần quan tâm trong phần 1 này:

Trong Connector bạn quan tâm tới classs CMsAccessConnector

Trong UI bạn quan tâm tới ConnectMsAccessUI

Trang 5

Tôi có chụp cấu trúc thư mục Project này như sau:

Mô hình class: Ở đây tôi tách làm 3 package để cho dễ quản lý.

– package Connector bao gồm các class kết nối và tương tác với các hệ cơ sở dữ liệu – package Model dùng để mô hình hóa bảng dữ liệu thành các đối tượng.

– package UI cung cấp giao diện cho người sử dụng để tương tác với dữ liệu.

Mô hình của package Connector:

Trang 6

Mô hình của package Model:

Mô hình của package UI:

Trang 7

Cơ sở dữ liệu mẫu, ở đây Tôi làm 2 bảng lophoc và sinhvien ( các bạn chú ý là kiểu

dữ liệu và kích thước là tương ứng cho cả 3 hệ cơ sở dữ liệu: Ms access, MySql và SqlServer…) Tôi muốn Demo sơ sơ chương trình quản lý sinh viên – lớp học Các bạn xem mô tả:

Trang 8

Trên đây là Tôi dùng Ms Access Tương tự bạn làm cho Mysql, SqlServer Có thể các bạn chưa thao tác với MySql bao giờ, Tôi sẽ hướng dẫn cách bạn download, cài đặt, cấu hình, sử dụng MySql Workbrench ở phần kế tiếp Hiện tại bây giờ các bạn theo dõi Tôi hướng dẫn MS Access

Giao diện chính của chương trình như sau:

Trang 9

Tương ứng với mỗi nút lệnh “MS Access”, “SQL Server” , “My Sql” thì chương trình của chúng ta sẽ kết nối tới các hệ cơ sở dữ liệu đó.

Tôi sẽ giải thích chi tiết cách kết nối, cách tương tác với dữ liệu: Lấy dữ liệu, thêm, sửa, xóa, xử lý thống kê (in ấn dữ liệu)

Topic tương đối dài nên Tôi sẽ chia ra từng loại hệ cơ sở dữ liệu khác nhau Chỉ cần các bạn cố gắng hiểu được cách tương tác tới 1 hệ cơ sở dữ liệu nào đó thì các hệ khác cũng tương tự, vấn đề chỉ nằm ở Logic lập trình của các bạn.

– Trong trường hợp kết nối tới MS Access, khi các bạn click chuột vào “Ms Access” thì sẽ có giao diện bên dưới:

Trang 10

Các bạn chú ý rằng Giao diện trên được làm hết trong class AbstractConnectUI, Kể

cả việc hiển thị dữ liệu.

Các bạn nhớ rằng Vì chúng ta đang cố gắng tương tác với các hệ cơ sở dữ liệu khác nhau, tức là chỉ khác nhau ở nơi lưu trữ dữ liệu, còn giao diện và các nghiệp vụ thì hoàn toàn giống nhau.

Như vậy ứng với Ms Access thì trong ConnectMsAccessUI, bạn sẽ gọi các class Connector liên quan tới Ms Accesss.

hoặc là ứng với MySQL thì trong ConnectMySqlUI, bạn sẽ gọi các clsss Connector liên quan tới MySQL

Tức là chúng ta chỉ làm GIAO DIỆN 1 lần mà thôi, tùy vào việc sử dụng hệ cơ sở

dữ liệu nào mà ta thay đổi hành vi khác nhau.

Các bạn phải rành về lập trình hướng đối tượng, tính kế thừa, tính đa hình thì việc tiếp thu sẽ nhanh chóng hơn.

Trang 11

Tôi đính kèm coding dưới này để các bạn tham khảo, Nếu như các bạn hiểu cách lấy

dữ liệu từ Access rồi thì MySQl, SQL Server cũng sẽ tương tự Topic này chỉ dừng lại ở việc truy suất dữ liệu Trong ConnectMySqlUI, ConnectSqlServerUI Tôi cũng

đã viết sẵn Code để truy vấn tới dữ liệu Nếu bạn nào khá về Logic thì cố gắng đưa lên giao diện như trong Access, vài ngày nữa Tôi sẽ làm tiếp phần: Thêm, Sửa, Xóa,

protected Connection m_Connection=null;

/**Hàm này dùng để kết nối tới các hệ cơ sở dữ liệu

* Tùy vào từng Hệ CSDL mà chúng ta coding khác nhau ở các lớp kế thừa từ nó

Trang 12

* Connection con: đối tượng connnection

* String strSql: câu truy vấn

/** Hàm này dùng để truy vấn dữ liệu,

* String strSql: câu truy vấn

* Trả về ResultSet

Trang 13

* Connection con: đối tượng connnection

* String strSql: câu truy vấn

* Nếu cập nhật thành công thì kết quả >0

*/

public int execNoneQuery(Connection con,String strSql)

Trang 14

* String strSql: câu truy vấn

* Nếu cập nhật thành công thì kết quả >0

Trang 15

Statement st=m_Connection.createStatement();rec=st.executeUpdate(strSql);

Trang 20

System.out.println(“SQL Exception: “+ e.toString());

} catch (ClassNotFoundException cE) {

System.out.println(“Class Not Found Exception: “+ cE.toString());

}

return m_Connection;

}

}

Trang 21

package tranduythanh.com.model;import java.util.ArrayList;

public class Lophoc {

private String malop;

private String tenlop;

private int siso;

private ArrayList<Sinhvien> list=new ArrayList<Sinhvien>();

Trang 22

public Sinhvien findSinhvienById(String masinhvien){

for(Sinhvien s: list)

{

if(s.getMasinhvien().equalsIgnoreCase(masinhvien))return s;

Trang 24

* @return the tenlop

Trang 25

this.siso = siso;

}

@Override

public String toString() {

// TODO Auto-generated method stub

return this.tenlop +” (“+this.siso+”)”;

}

}

class Sinhvien

package tranduythanh.com.model;import java.sql.Date;

public class Sinhvien {

private String masinhvien;

private String malop;

private String hoten;

private Date namsinh;

private String diachi;

Trang 27

* @return the hoten

Trang 30

public abstract class AbstractUI extends JFrame {

private static final long serialVersionUID = 1L;

public AbstractUI(String title)

Trang 32

public abstract void addControl();

public abstract void doActionControl(Object o);

public abstract void doOwnerWindowFeature();

private class ProcessEvent implements ActionListener

Trang 34

private static final long serialVersionUID = 1L;

protected static JList lstData;

protected JTable tblData;

protected DefaultTableModel dtmData;

protected JButton

btnXoaLop,btnThemLop,btnSuaLop,btnThemSinhvien,btnLuuSinhvien,btnXoaSinhvien;protected JTextField txtMasinhvien,txtTenSinhvien,txtNgaysinh,txtThangsinh,txtNamsinh;protected JTextArea txtDiachi;

protected static JComboBox cboDanhsachlop;

protected static ArrayList<Lophoc> listLophoc;

protected static ArrayList<Sinhvien> listSinhvien;

protected static Lophoc lophocSelected;

protected static Sinhvien sinhvienSelected;

Trang 35

protected CConnector m_connector;

public AbstractConnectUI(String title)

public void addControl() {

// TODO Auto-generated method stub

JPanel pnBorder=new JPanel();

pnBorder.setLayout(new BorderLayout());

JPanel pnNorth=new JPanel();

JLabel lblTitle=new JLabel(“Quản lý Sinh Viên – Lớp Học”);

Font ftTitle=new Font(“arial”, Font.BOLD, 32);

lblTitle.setFont(ftTitle);

lblTitle.setForeground(Color.BLUE);

pnNorth.add(lblTitle);

pnBorder.add(pnNorth,BorderLayout.NORTH);

Trang 36

JPanel pnListLop=new JPanel();

JPanel pnListSinhvien=new JPanel();

JSplitPane slitPane=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, pnListLop,

JPanel pnListLopSouth=new JPanel();

btnThemLop =new JButton(“Thêm lớp”);

Trang 37

JLabel lblSinhvienTitle=new JLabel(“Thông tin chi tiết”);

dtmData =new DefaultTableModel();

dtmData.addColumn(“Mã Sinh Viên”);

dtmData.addColumn(“Tên Sinh Viên”);

pnSinhvienDetail.setLayout(new BoxLayout(pnSinhvienDetail, BoxLayout.Y_AXIS ));

JPanel pnLopList=new JPanel();

JLabel lblLopId=new JLabel(“Lớp học :”);

cboDanhsachlop=new JComboBox();

Trang 38

pnLopList.add(cboDanhsachlop);

pnSinhvienDetail.add(pnLopList);

JPanel pnSinhvienId=new JPanel();

JLabel lblSinhvienId=new JLabel(“Mã sinh viên:”);txtMasinhvien=new JTextField(20);

pnSinhvienId.add(lblSinhvienId);

pnSinhvienId.add(txtMasinhvien);

pnSinhvienDetail.add(pnSinhvienId);

JPanel pnSinhvienName=new JPanel();

JLabel lblSinhvienName=new JLabel(“Tên sinh viên:”);txtTenSinhvien=new JTextField(20);

pnSinhvienName.add(lblSinhvienName);

pnSinhvienName.add(txtTenSinhvien);

pnSinhvienDetail.add(pnSinhvienName);

JPanel pnNgaysinh=new JPanel();

JLabel lblNgaysinh=new JLabel(“Ngày Sinh: “);

txtNgaysinh=new JTextField(3);

txtThangsinh=new JTextField(3);

txtNamsinh=new JTextField(4);

pnNgaysinh.add(lblNgaysinh);

Trang 39

JPanel pnNgaySinhChitiet=new JPanel();

JPanel pnSinhvienDescription=new JPanel();

JLabel lblDescription=new JLabel(“Địa chỉ:”);

Trang 40

public void doActionControl(Object o) {

// TODO Auto-generated method stub

if(o.equals(lstData))

{

showLopAndSinhvien();

}

Trang 41

public void valueChanged(ListSelectionEvent arg0) {

// TODO Auto-generated method stub

doActionControl(arg0.getSource());

}

@Override

public void mouseClicked(MouseEvent e) {

// TODO Auto-generated method stub

doActionControl(e.getSource());

}

@Override

public void mouseEntered(MouseEvent e) {

// TODO Auto-generated method stub

}

Trang 42

public void mouseExited(MouseEvent e) {

// TODO Auto-generated method stub

}

@Override

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

public void doOwnerWindowFeature() {

// TODO Auto-generated method stub

Trang 43

public abstract ArrayList<Lophoc> getListLop();

public abstract ArrayList<Sinhvien> getListSinhvienByIdLop(String malop);public void showLopAndSinhvien()

vec.add(s.getMalop());

Trang 46

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.border.TitledBorder;

public class MainUI extends AbstractUI{

private static final long serialVersionUID = 1L;

JPanel pnButton=new JPanel();

TitledBorder bor1=new TitledBorder(BorderFactory.createEtchedBorder(Color.RED, Color.BLUE), “Chọn loại kết nối”);

pnButton.setBorder(bor1);

JPanel pnAccess=new JPanel();

pnAccess.setLayout(new BoxLayout(pnAccess, BoxLayout.Y_AXIS));

ImageIcon icon=new ImageIcon(“images/ms-access.png”);

btnMsAcces=new JButton();

btnMsAcces.setIcon(icon);

pnAccess.add(btnMsAcces);

Trang 47

JLabel lblAccess=new JLabel(“Ms Access”);

pnAccess.add(lblAccess);

pnButton.add(pnAccess);

JPanel pnSqlServer=new JPanel();

pnSqlServer.setLayout(new BoxLayout(pnSqlServer, BoxLayout.Y_AXIS));

JPanel pnMysql=new JPanel();

pnMysql.setLayout(new BoxLayout(pnMysql, BoxLayout.Y_AXIS));

Trang 48

btnShutdown.setToolTipText(“Click vào đây để thoát chương trình!”);

}

@Override

public void doActionControl(Object o) {

Trang 50

public static void main(String[] args) {

MainUI ui=new MainUI(“Demo Kết nối nhiều CSDL”);

ui.doShow();

}

@Override

public void doOwnerWindowFeature() {

// TODO Auto-generated method stub

Trang 51

import java.util.ArrayList;

import tranduythanh.com.connector.CMsAccessConnector;import tranduythanh.com.model.Lophoc;

private static final long serialVersionUID = 1L;

public ConnectMsAccessUI(String title)

public void addControl() {

// TODO Auto-generated method stub

super.addControl();

updateLopList();

Trang 52

@Override

public void doActionControl(Object o) {

// TODO Auto-generated method stub

public ArrayList<Lophoc> getListLop() {

// TODO Auto-generated method stub

ArrayList<Lophoc>listLop=new ArrayList<Lophoc>();

m_connector.getConnect(“”, “database\\quanlysinhvien.accdb”, “”, “”);ResultSet rs= m_connector.execQuery(“select * from lophoc”);

Trang 53

public ArrayList<Sinhvien> getListSinhvienByIdLop(String malop) {

// TODO Auto-generated method stub

Trang 54

public class ConnectMySqlUI extends AbstractConnectUI{

private static final long serialVersionUID = 1L;

public ConnectMySqlUI(String title)

{

super(title);

Trang 55

CMySqlConnector con=new CMySqlConnector();

con.getConnect(“localhost”, “dbtest”, “root”, “hoilamgi”);ResultSet rs= con.execQuery(“select * from tblemployee”);try

public void addControl() {

// TODO Auto-generated method stub

Trang 56

// TODO Auto-generated method stub

}

@Override

public void doOwnerWindowFeature() {

// TODO Auto-generated method stub

super.doOwnerWindowFeature();

}

@Override

public ArrayList<Lophoc> getListLop() {

// TODO Auto-generated method stub

Trang 57

import tranduythanh.com.connector.CSqlServerConnector;import tranduythanh.com.model.Lophoc;

private static final long serialVersionUID = 1L;

public ConnectSqlServerUI(String title)

{

CSqlServerConnector con=new CSqlServerConnector();con.getConnect(“fithui”, “dbexample”, “sa”, “hoilamgi”);ResultSet rs=con.execQuery(“select * from tblCustomer”);try

Trang 58

public void addControl() {

// TODO Auto-generated method stub

Ngày đăng: 15/08/2017, 19:42

TỪ KHÓA LIÊN QUAN

w