Lập Trình Thao Tác Với Địa Chỉ Ip, Lớp Url Connection

Phương thức Insert() được định nghĩa trong lớp TestConnection:

public void Insert(int id,String name,int number) throws SQLException{ Statement sta = this.con.createStatement();

String sql1 = "Insert Products values ("+id+",'"+name+"',"+number+")"; sta.executeUpdate(sql1);

}

Ví dụ 6.6: Để thêm mới một bản ghi vào CSDL viết sự kiện cho btnThem như sau.

private void btnThemMouseClicked(Java.awt.event.MouseEvent evt) { try {

// TODO add your handling code here: TestConnection pt = new TestConnection();

pt.Insert(Integer.parseInt(txtid.getText()),txtname.getText(), Integer.parseInt(txtnumber.getText()));

btnThem.doClick();

} catch (ClassNotFoundException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,null, ex);

} catch (SQLException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,null, ex);

}

}

Phương thức Delete() được định nghĩa trong lớp TestConnection: public void Delete(int id) throws SQLException{

Statement sta = this.con.createStatement(); String sql ="delete Products where ID ="+id+""; sta.executeUpdate(sql);

}

Ví dụ 6.7: Để xóa một bản ghi trong CSDL viết sự kiện cho jButton btnXoa như sau.

private void btnXoaMouseClicked(Java.awt.event.MouseEvent evt) { try {

// TODO add )your handling code here: TestConnection pt = new TestConnection();

pt.Delete(Integer.parseInt(txtid.getText()));

} catch (ClassNotFoundException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,null, ex);

} catch (SQLException ex) {

Logger.getLogger(FrameConnection.class.getName()).log(Level.SEVERE,null, ex);

}

}

6.6. Mô tả Rowset, JDBCRowset và CatchedRowset

Nếu cần thao tác với JavaBean, nên sử dụng Rowset Inteface. Rowset Interface cung cấp một tập hợp các thuộc tính của JavaBean cho phép một instance của RowSet được cấu hình để kết nối tới một Data source của JDBC và đọc dữ liệu từ Data source.

Để truyền dữ liệu đầu vào tới thuộc tính command của một Rowset, sử dụng các phương thức setter bao gồm setInt, setBytes, setString, … Command này là truy vấn SQL mà Rowset sử dụng khi nó lấy dữ liệu từ một Relational Database.

JDBCRowset trong java bao gồm CachedRowSet, JdbcRowSet, WebRowSet, JoinRowSet, FilteredRowSet. Sử dụng RowSet sẽ giúp thực hiện các thao tác thêm, xoá và cập nhật một cách tiện lợi mà không cần phải viết các câu lệnh sql.

CachedRowSet không yêu cầu phải duy trì một kết nối với cơ sở dữ liệu. Nó chỉ thực hiện kết nối khi có submit và điều này sẽ làm tăng hiệu suất cho cơ sở dữ liệu. CachedRowSet có thể thực hiện các hoạt động sau đây trên cơ sở dữ liệu

- Insert: Để thực hiện thêm một dòng dữ liệu vào bảng, sử dụng phương thức moveToInsertRow()

- Update: Phương thức updateRow():cập nhật một dòng dữ liệu của bảng

- Delete: Sử dụng phương thức deleteRow() để xoá một dòng dữ liệu của bảng.

- Select: Một đối tượng CachedRowSet là có thể cuộn (scrollable) và điều này cho phép duyệt bản ghi theo nhiều cách. Một khi con trỏ nằm tại dòng mong muốn, các phương thức getter có thể được gọi để lấy các giá trị của các cột.

CÂU HỎI ÔN TẬP, THẢO LUẬN

1. JDBC là gì ?

2. Trình bày chức năng và kiến trúc của JDBC trong Java ?

3. Trình bày các mô hình hoạt động của JDBC ?

4. Tìm hiểu cơ chế hoạt động của JDBC ?

5. Trình bày các bước lập trình truy xuất cơ sở dữ liệu với JDBC ?

6. Tìm hiểu đối tượng Statement( Định nghĩa, chức năng, các phương thức). ? Cho ví dụ minh họa ?

7. Tìm hiểu về đối tượng Resultset( Định nghĩa, chức năng, các kiểu Resultset, các phương thức, cơ chế hoạt động). ? Cho ví dụ minh họa ?

8. Tìm hiểu về đối tượng Rowset ( Định nghĩa, chức năng, các phương thức). ? Cho ví dụ minh họa ?

9. Tìm hiểu về đối tượng Metadata ( Định nghĩa, chức năng, các phương thức). ?

Cho ví dụ minh họa ?

10. Tìm hiểu đối tượng CallableStatement( Định nghĩa, chức năng, các phương thức) ? Cho ví dụ minh họa ?

11. Tìm hiểu tổng quan về SQL ? Các câu lệnh truy vấn dữ liệu ? ví dụ minh họa?

12. Tìm hiểu cách kết nối và thực hiện các câu lệnh truy vấn CSDL giữa Java với SQL server ? Cho ví dụ minh họa ?

13. Giải thích các câu lệnh sau?

public void connectToAndQueryDatabase(String username, String password) { Connection con = DriverManager.getConnection(

"jdbc:myDriver:myDatabase",username, password);

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); while (rs.next()) {

int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c");

}

}

BÀI TẬP ỨNG DỤNG

Câu 1. Thực hiện demo về kết nối CSDL và thực thi các phưong thức của đối tượng Statement:

-executeQuery

- executeUpdate

- execute

Câu 2. Cài đặt lớp NhanVien quản lý thông tin về nhân viên bao gồm:

- Mã nhân viên

- Họ tên nhân viên

- Năm sinh

- Hệ số lương

- Lương cơ bản (thuộc tính lớp)

Viết các phương thức khởi tạo tương ứng.

Câu 3. Viết chương trình cài đặt lớp QuanLyNhanVien với các phương thức:

- Nhập thông tin nhân viên (Không cho phép 2 nhân viên được trùng id).

- Kiểm tra sự tồn tại của nhân viên dựa vào mã nhân viên.

- Tính lương nhân viên.

- Tìm nhân viên có lương cao nhất

- Hiển thị thông tin nhân viên.

- In bảng lương nhân viên.

Câu 4. Viết chương trình thực hiện xây dựng menu như sau để cho phép người dùng lựa chọn các chức năng của quản lý nhân viên:

- 1. Nhập thông tin nhân viên.

- 2. Tìm nhân viên có lương cao nhất.

- 3. In bảng lương tháng cho nhân viên.

- 4. Kết thúc.

Câu 5.Viết ứng dụng kết hợp JDBC và API, tạo và kết nối CSDL

Add row to table Thêm một hàng vào bảng mỗi khi có mặt hàng mới thêm vào Update 1

Add row to table: Thêm một hàng vào bảng mỗi khi có mặt hàng mới thêm vào.

Update database: Cập nhật bảng COFFES dựa trên dữ liệu trong bảng.

Discard changes: Trích rút nội dung của bảng COFFES, thay thế dữ liệu trong bảng dữ liệu.

Câu 6. Tạo 1 database có tên EmployeeManagement. Tạo 1 table có tên Employees gồm các trường như sau:

- EmpID int primary key

- EmpName nvarchar(50)

- BirthDate datetime,

- Address nvarchar(250)


Xây dựng 1 chương trình java sử dụng database trên và có các chức năng:

1. Nhập mới 1 nhân viên

2. Sửa thông tin nhân viên

3. Xoá thông tin nhân viên

4. Hiển thị toàn bộ thông tin nhân viên. Đưa ra màn hình tổng số nhân viên có trong database

5. Tìm kiếm 1 nhân viên theo tên và hiển thị tổng số nhân viên tìm thấy

6. Exit

Câu 7. Cho DB có tên là APJ2_Assignment, có dạng như sau, dữ liệu đi kèm với file sql Assignment1.sql

Sử dụng netbeans tạo giao diện như sau Yêu cầu a Ngay khi form được load lên 2

Sử dụng netbeans tạo giao diện như sau


Yêu cầu a Ngay khi form được load lên phải lấy được danh sách các Manufacturer ra 3

Yêu cầu

a. Ngay khi form được load lên, phải lấy được danh sách các Manufacturer ra và đưa vào trong combobox, lưu ý lúc hiển thị thì sử dụng tên, nhưng vẫn phải lưu được Id của manufacturer

b. Khi bấm nút add new, sẽ thực hiện validate dữ liệu như sau

i. Tất cả các trường phải được nhập

ii. Nếu đã nhập đủ, kiểm tra productId đã tồn tại trong bảng Product hay chưa,

1. nếu tồn tại rồi thì báo lỗi,

2. nếu chưa mới cho insert vào db

c. Khi bấm vào nút show sẽ đưa dữ liệu từ cả 2 bảng vào table phía dưới với dữ liệu tương ứng nhau (hiển thị tên manufacturer tương ứng với manufacturerId)

d. Khi bấm nút find hiện dialog sau:

Tương ứng với Id nhập vào tìm kiếm trong DB 1 Nếu có productId đó thì hiện duy 4

Tương ứng với Id nhập vào, tìm kiếm trong DB

1. Nếu có productId đó thì hiện duy nhất dữ liệu của bản ghi đó vào bảng

2. Nếu không có productId đó thì hiện thông báo lỗi : “Data not found.”

Câu 8.

Cho DB có 1 bảng danh sách học viên với 3 cột Id, Ten, GioiTinh. Yêu cầu có ít nhất 5 bản ghi với các giới tính khác nhau (nam/nữ)

a. Viết stored procedure SP_StudentQuery dữ liệu từ bảng DanhSachHocVien ra, stored procedure này có 3 tham số truyền vào : @soluong INT, @soluongNam Int,

@soluongnu INT. Yêu cầu 3 tham số này truyền vào được và lấy ra được dữ liệu từ bên trong stored procedure

b. Viết class java bình thường, có hàm main, sử dụng JDBC với câu lệnh CallableStatement. Yêu cầu gọi đến SP_StudentQuery, lấy ra được danh sách học viên (resultset). Ngoài ra cũng sử dụng các tham số truyền vào để lấy ra được tổng số lượng học viên, số lượng nữ, số lượng nam và in ra màn hình.

c. Với ResultSet học viên trả về, và với số lượng học viên đã lấy được là n, in ra thông tin của học viên n-1 và n-2 (nếu có)

CHƯƠNG 7. LẬP TRÌNH ỨNG DỤNG MẠNG VỚI SOCKET

Mục đích

Chương này giới thiệu về lập trình mạng với socket sử dụng các lớp được cung cấp trong JAVA như: TCP socket, UDP Socket, cách lấy dữ liệu từ website, cách gửi và nhận email.

7.1. Giới thiệu chung

Lập trình ứng dụng mạng với socket là kỹ thuật được sử dụng phổ biến trong thực tế. Các ngôn ngữ lập trình hầu hết đều có thư viện hỗ trợ lập trình với socket như: Ngôn ngữ c/c++ có thư viện socket, VB có thư viện WinSock, C# có thư viện system.socket...Trong Java các lớp thư viện hỗ trợ lập trình với socket hầu hết nằm trong gói java.net. Khi phát triển các ứng dụng mạng thì java và .NET là hai ngôn ngữ hỗ trợ rất mạnh đối với socket sử dụng giao thức TCP (TCPsocket) và UDP (UDPsocket).

Trong chương này giới thiệu lập trình ứng dụng mạng sử dụng TCPSocket, UDPSocket sử dụng các gói như java.net, java.io được cung cấp sẵn trong Java. Các lớp quan trong nhất trong gói java.net gồm 6 lớp: InetAddress, ServerSocket, Socket, DatagramPacket, DatagramSocket, URL. Với 6 lớp này Java cho phép phát triển tất cả các ứng dụng mạng từ ứng dụng đơn giản cho đến phức tạp, từ các ứng dụng nhỏ đến các ứng dụng lớn.

Sau đây chúng ta sẽ khảo sát những kỹ thuật lập trình mạng cơ bản nhất sử dụng socket trong Java. Vấn đề lập trình mạng có thể được định nghĩa với công thức sau:

LTM=KTM+MH+NN

Trong đó:

LTM: Lập trình mạng

KTM: Kiến thức mạng truyền thông (mạng máy tính, PSTN....) MH: Mô hình lập trình mạng

NN: Ngôn ngữ lập trình

7.2. Lập trình thao tác với địa chỉ máy trạm

7.2.1. Lập trình thao tác với địa chỉ IP, lớp URL Connection

7.2.1.1. Lớp InetAddress

Java có các lớp quan trọng để thao tác với địa chỉ IP trong gói java.net. Lớp quan trọng nhất là lớp InetAddress. Lớp này cho phép lấy địa chỉ của một máy trạm bất kỳ trên mạng và cho phép dễ dàng hoán chuyển giữa địa chỉ IP và tên của một máy trạm (host). Mỗi đối tượng InetAddress chứa 2 thành phần chính của một máy trạm là hostname và địa chỉ IP của máy trạm đó..

Hình 7 1 Lớp kế thừa từ lớp InetAddress và SocketAddress Lớp InetAddress được 5

Hình 7.1. Lớp kế thừa từ lớp InetAddress và SocketAddress

Lớp InetAddress được sử dụng phổ biến trong các lớp Socket, ServerSocket, URL, DatagramSocket, DatagramPacket và nó được kế thừa từ lớp Object:

public class InetAddress extends Object implements Serializable


Tóm tắt các phương thức của lớp Inet Address

boolean

equals(Object obj) So sánh đối tượng với đối tượng ob’

Byte []

getAddress()

Trả về địa chỉ IP chứa trong đối tượng InetAddress dạng mảng

static InetAddress[]

getAllByName(String host)

Trả về mảng địa chỉ của tất cả các máy trạm có cùng tên trên mạng

static InetAddress

getByAddress(byte[] addr)

Trả về đối tượng InetAddress tương ứng với địa chỉ IP truyền cho phương thức dưới dạng mảng byte

static InetAddress

getByAddress(String host, byte[] addr)

Tạo đối tượng InetAddress dựa trên tên và địa chỉ IP

static InetAddress

getByName(String host) Xác định địa chỉ IP của máy trạm từ tên của máy trạm (host)

String

getCanonicalHostName() Lấy tên miền của địa chỉ IP

String

getHostAddress() Trả về địa chỉ IP chứa trong đối tượng INetAddress là chuỗi dạng a.b.c.d

String

getHostName() Trả về tên máy trạm chưa trong đối tượng

static InetAdd

getLocalHost() Lấy đối tượng InetAddress của máy cục bộ

int

hashCode() Trả về hashcode của địa chỉ IP cục thể

Có thể bạn quan tâm!

Xem toàn bộ 232 trang tài liệu này.

Đặc điểm của lớp InetAddress là lớp không có hàm tạo nên không thể tạo ra đối tượng InetAddress bằng toán tử new. Nhưng bù lại, lớp InetAddress có một số phương thức có thuộc tính static cho phép lấy địa chỉ của máy trạm bất kỳ trên mạng, cụ thể:

Tên phương thức

boolean

isAnyLocalAddress()

Kiểm tra địa chỉ InetAddress có phải địa chỉ wildcard không?

boolean

isLinkLocalAddress()

Kiểm tra địa chỉ có phải là một địa chỉ link-local hay không.

boolean

isLoopbackAddress()

Kiểm tra địa chỉ có phải là địa chỉ Loopback không.

boolean

isMCGlobal() Kiểm tra địa chỉ multicast có phạm vi toàn cục hay không?

boolean

isMCLinkLocal()

Kiểm tra địa chỉ multicast có phải là địa chỉ có phạm vi liên kết hay không?

boolean

isMCNodeLocal()

Kiểm tra địa chỉ multicast có phải là địa chỉ phạm vi nút mạng hay không?

boolean


isMulticastAddress()

Kiểm tra địa chỉ InetAddress có phải là địa chỉ IP multicast hay không.

String

toString()Chuyển địa chỉ IP thành chuỗi.

.....

⇦ Trang trước - Trang tiếp theo ⇨

Ngày đăng: 29/01/2024