1. Trang chủ
  2. » Thể loại khác

GIÁO TRÌNH CÔNG NGHỆ JAVA. TS. Hoàng Xuân Thảo

153 2 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 153
Dung lượng 1,67 MB

Nội dung

ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI KHOA CƠNG NGHỆ THƠNG TIN GIÁO TRÌNH CƠNG NGHỆ JAVA Chủ biên : TS Hoàng Xuân Thảo Biên soạn: TS Hoàng Xuân Thảo ThS Phạm Nguyên Văn (Dùng cho chương trình đào tạo hệ đại học) Lưu hành nội HÀ NỘI - 2016 MỤC LỤC Chương 1: I/O File Lý thuyết: 1.1 Một số cách thức vào/ra file với java.io 1.1.1 Ghi dạng byte: File, FileInputStream, FileOutputStream 1.1.2 Ghi dạng text: FileReader, FileWriter 1.2 Đọc ghi file: 1.2.1 BufferReader 1.2.2 PrintWriter 1.3 Interface Serializable 1.3.1 ObjectInputStream 1.3.2 ObjectOutputStream Thực hành: Chương : Generic Lý thuyết: 1.1 Generic class 1.2 Generic method Thực hành: Chương : Swing components Lý thuyết: 1.1 Một số tính Swing 1.2 JFrame, JPanel 1.3 1.4 1.5 JButton, JLabel, JTextField, JTextArea JCheckbox, JRadioButton, JPasswordFiled JScrollPane, JOptionPane, JDialog 1.6 1.7 Layout: FlowLayout, BorderLayout, GridLayout JMenu Thực hành tập: Chương : Collections Lý thuyết: 1.1 ArrayList 1.2 HashSet (trong Set interface) 1.3 LinkedList (trong List interface) 1.4 PriorityQueue (trong Queue interface) Kiểm tra lần Chương : Kết nối database Lý thuyết: 1.1 Lập trình JDBC: 1.2 Tạo kết nối tới sở liệu (ví dụ Access ) 1.3 Truy xuất liệu, tạo, chèn, xoá: Statement, ResultSet Thực hành: Chương 6: Ôn tập Bài tập java Bài tập java nâng cao Chương 1: I/O File Lý thuyết: 1.1 Một số cách thức vào/ra file với java.io Gói java.io chứa gần tất lớp bạn cần để thực input output (I/O) Java Tất stream biểu diễn nguồn input đích đến output Stream java.io package hỗ trợ nhiều liệu kiểu gốc, Object, ký tự nội bộ, … Một stream định nghĩa dãy liên tục liệu InputStreamđược sử dụng để đọc liệu từ nguồn OutputStream sử dụng để ghi liệu tới đích đến Java cung cấp hỗ trợ mạnh mẽ linh hoạt cho I/O liên quan tới File mạng phần hướng dẫn này, bàn luận tính liên quan tới stream I/O Chúng ta xem xét ví dụ sử dụng phổ biến Byte Stream Java Byte Stream Java sử dụng để thực input output byte (8 bit) Mặc dù có nhiều lớp liên quan tới byte stream lớp thường sử dụng là: FileInputStream FileOutputStream Sau ví dụ sử dụng hai lớp để chép input file vào output file: import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream("input.txt"); out = new FileOutputStream("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } } Bây giả sử có file input.txt có nội dung sau: Day la vi du ve chep file Trong bước tiếp theo, biên dịch chương trình thực thi nó, cho kết tạo file output.txt có nội dung có input.txt Vì thế, bạn đặt code vào CopyFile.java file làm sau: $javac CopyFile.java $java CopyFile Character Stream Java Byte Stream Java sử dụng để thực input output byte (8 bit), đó, Character Stream Java sử dụng để thực input output cho Unicode 16 bit Mặc dù có nhiều lớp liên quan tới character stream lớp thường dùng FileReader FileWriter… Mặc dù nội tại, FileReader sử dụng FileInputStream FileWriter sử dụng FileOutputStream, có điểm khác biệt lớn FileReader đọc hai byte thời điểm FileWriter ghi byte lúc Chúng ta viết lại ví dụ mà sử dụng hai lớp để chép input file (có ký tự Unicode) vào output file import java.io.*; public class CopyFile { public static void main(String args[]) throws IOException { FileReader in = null; FileWriter out = null; try { in = new FileReader("input.txt"); out = new FileWriter("output.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } }finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } } Giả sử có input.txt có nội dung sau: Day la vi du ve chep file Trong bước tiếp theo, biên dịch chương trình thực thi nó, cho kết tạo file output.txt có nội dung có input.txt Vì thế, bạn đặt code vào CopyFile.java file làm sau: $javac CopyFile.java $java CopyFile Standard Stream Java Tất Ngơn ngữ lập trình cung cấp hỗ trợ cho I/O chuẩn, chương trình người sử dụng nhận đầu vào từ bàn phím sau tạo kết hình máy tính Nếu bạn biết ngơn ngữ C/C++, bạn phải biết thiết bị chuẩn STDIN, STDOUT, STDERR Theo cách tương tự, Java cung cấp Standard Stream sau:  Đầu vào chuẩn (Standard Input): Nó sử dụng để truyền liệu tới chương trình người dùng thường bàn phím sử dụng đầu vào chuẩn biểu diễn System.in  Đầu chuẩn (Standard Output): Nó sử dụng để hiển thị kết đầu từ chương trình người dùng thường hình máy tính sử dụng đầu chuẩn biểu diễn System.out  Lỗi chuẩn (Standard Error): Được sử dụng để hiển thị lỗi chương trình người dùng thường hình máy tính sử dụng lỗi chuẩn biểu diễn System.err Sau chương trình đơn giản tạo InputStreamReader để đọc luồng đầu vào chuẩn tới người sử dụng gõ "q" import java.io.*; public class ReadConsole { public static void main(String args[]) throws IOException { InputStreamReader cin = null; try { cin = new InputStreamReader(System.in); System.out.println("Nhap cac ky tu, 'q' de thoat."); char c; { c = (char) cin.read(); System.out.print(c); } while(c != 'q'); }finally { if (cin != null) { cin.close(); } } } } Giữ code ReadConsole.java file thực thi biên dịch Chương trình tiếp tục đọc hiển thị kết tới nhấn phím "q" $javac ReadConsole.java $java ReadConsole Nhap cac ky tu, 'q' de thoat 1 e e q q Đọc Ghi File Java Như miêu tả trước đó, Stream định nghĩa dãy liên tục liệu InputStream sử dụng để đọc liệu từ nguồn vàOutputStream sử dụng để ghi liệu tới đích Dưới cấu trúc có thứ tự lớp để xử lý luồng Input Output 1.1.1 Ghi dạng byte: File, FileInputStream, FileOutputStream File Lớp File Java biểu diễn pathname file thư mục theo phương thức trừu tượng Lớp sử dụng để tạo file thư mục, để tìm kiếm file, xóa file, … Đối tượng File biểu diễn file/thư mục thực đĩa Có constructor sau để tạo đối tượng File Java: Cú pháp sau tạo đối tượng File từ pathname trừu tượng cha chuỗi pathname File(File parent, String child); Cú pháp sau tạo đối tượng File việc biến đổi chuỗi pathname cho thành pathname trừu tượng File(String pathname) Cú pháp sau tạo đối tượng File từ chuỗi pathname cha chuỗi pathname File(String parent, String child) Cú pháp sau tạo đối tượng File việc biến đổi URI cho thành pathname trừu tượng File(URI uri) Khi bạn có đối tượng File, có phương thức sau giúp bạn thao tác file Java: STT Phương thức Miêu tả public String getName() Trả tên file thư mục biểu thị pathname trừu tượng public String getParent() Trả chuỗi pathname pathname trừu tượng cha, null pathname không tên thư mục cha public File getParentFile() Trả pathname trừu tượng pathname trừu tượng cha, null pathname không tên thư mục cha public String getPath() Biến đổi pathname trừu tượng thành chuỗi pathname Tải file mysql-connector-java-x.y.zz.zip máy https://dev.mysql.com/downloads/connector/j/, giải nén file mysql-connector-java-x.y.zz-bin.jar Add thư viện JDBC Driver mysql-connector-java-x.y.zz-bin.jar vào project Gọi phương thức Class.forName(“com.mysql.jdbc.Driver”) Gọi phương thức DriverManager.getConnection() để kết nối đến sở liệu MySQL Chi tiết việc kết nối ứng dụng Java với sở liệu MySQL JDBC thể hiển ví dụ Ví dụ kết nối Java với MySQL Tạo bảng ‘student’ sở liệu có tên ‘testdb’ MySQL với câu lệnh sau: CREATE TABLE student ( id INT NOT NULL, name VARCHAR (32) NOT NULL, address VARCHAR (32) NOT NULL, PRIMARY KEY (id) ); Insert vài dòng liệu cho bảng ‘student’ INSERT INTO student(id, name, address) VALUES (1, "Công", "Hanoi"); INSERT INTO student(id, name, address) VALUES (2, "Dung", "Vinhphuc"); INSERT INTO student(id, name, address) VALUES (3, "Ngôn", "Danang"); INSERT INTO student(id, name, address) VALUES (4, "Hạnh", "Hanoi") Sau thực thi câu lệnh có liệu sau: Tạo chương trình để kết nối hiển thị liệu bảng ‘student’ sau: File: ConnectMysqlExample.java package vn.viettuts.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectMysqlExample { private static String DB_URL = "jdbc:mysql://localhost:3306/testdb"; private static String USER_NAME = "root"; private static String PASSWORD = "1234567890"; /** * main * * @author viettuts.vn * @param args */ public static void main(String args[]) { try { // connnect to database 'testdb' Connection conn = getConnection(DB_URL, USER_NAME, PASSWORD); // crate statement Statement stmt = conn.createStatement(); // get data from table 'student' ResultSet rs = stmt.executeQuery("select * from student"); / show data while (rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3)); } // close connection conn.close(); } catch (Exception ex) { ex.printStackTrace() ; } } /** * create connection * * @author viettuts.vn * @param dbURL: database's url * @param userName: username is used to login * @param password: password is used to login * @return connection */ public static Connection getConnection(String dbURL, String userName, String password) { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(dbURL, userName, password); System.out.println("connect successfully!"); } catch (Exception ex) { System.out.println("connect failure!"); ex.printStackTrace(); } return conn; } } Kết quả: connect successfully! Công Hanoi Dung Vinhphuc Ngôn Danang Hạnh Hanoi 1.3 Truy xuất liệu, tạo, chèn, xoá: Statement, ResultSet Statement Statement interface java cung cấp phương thức để thực thi câu lệnh truy vấn với sở liệu SQL Statement interface nhà máy ResultSet, tức cung cấp phương thức để tạo đối tượng ResultSet Các phương thức phổ biến Statement interface Dưới phương thức phổ biến Statement interface: Phương thức 1) public ResultSet executeQuery(String sql): Mô tả sử dụng để thực truy vấn SELECT Nó trả đối tượng ResultSet 2) public int sử dụng để thực thi câu truy vấn executeUpdate(String sql): định, create, drop, insert, update, delete, … 3) boolean execute(String sql): sử dụng để thực thi câu truy vấn trả nhiều kết 4) int[] executeBatch(): sử dụng để thực thi tập lệnh Ví dụ sử dụng Statement java Đưới ví dụ INSERT SELECT sử dụng Statement java với MySQL: package vn.viettuts.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ConnectMysqlExample { private static String DB_URL = "jdbc:mysql://localhost:3306/testdb"; private static String USER_NAME = "root"; private static String PASSWORD = "1234567890"; /** * main * * @author viettuts.vn * @param args */ public static void main(String args[]) { try { // connnect to database 'testdb' Connection conn = getConnection(DB_URL, USER_NAME, PASSWORD); // crate statement Statement stmt = conn.createStatement(); // insert 'student' stmt.executeUpdate("INSERT INTO student(id, name, address) " + "VALUES (5, 'Vinh', 'Hanoi')"); / get data from table 'student' ResultSet rs = stmt.executeQuery("SELECT * FROM student"); / show data while (rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3)); } // close connection conn.close(); } catch (Exception ex) { ex.printStackTrace() ; } } /** * create connection * * @author viettuts.vn * @param dbURL: database's url * @param userName: username is used to login * @param password: password is used to login * @return connection */ public static Connection getConnection(String dbURL, String userName, String password) { Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(dbURL, userName, password); System.out.println("connect successfully!"); } catch (Exception ex) { System.out.println("connect failure!"); ex.printStackTrace(); } return conn; } } Kết quả: connect successfully! Công Hanoi Dung Vinhphuc Ngôn Danang Hạnh Hanoi Vinh Hanoi ResultSet Đối tượng ResultSet trì trỏ trỏ đến hàng bảng Ban đầu, trỏ trỏ đến hàng Nhưng làm cho đối tượng di chuyển hướng chuyển tiếp ngược lại cách truyền hai kiểu TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE phương thức createStatement(int, int) làm cho đối tượng cập nhật cách: Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); Các phương thức phổ biến giao diện ResultSet java Dưới phương thức phổ biến giao diện ResultSet java: Phương thức Mô tả 1) public boolean next(): sử dụng để di chuyển trỏ đến hàng từ vị trí 2) public boolean previous(): sử dụng để di chuyển trỏ đến hàng trước từ vị trí 3) public boolean first(): sử dụng để di chuyển trỏ đến hàng đối tượng thiết lập kết 4) public boolean last(): sử dụng để di chuyển trỏ đến hàng cuối đối tượng thiết lập kết 5) public boolean absolute(int row): sử dụng để di chuyển trỏ đến số hàng định đối tượng ResultSet 6) public boolean relative(int row): sử dụng để di chuyển trỏ đến số hàng tương đối đối tượng ResultSet, dương âm 7) public int getInt(int columnIndex): sử dụng để trả liệu mục cột định hàng int 8) public int getInt(String sử dụng để trả lại liệu tên cột columnName): định hàng int 9) public String getString(int columnIndex): sử dụng để trả liệu mục cột định dòng String 10) public String getString(String columnName): sử dụng để trả lại liệu tên cột định hàng String Ví dụ Scrollable ResultSet java Ví dụ in hình row thứ kết truy vấn: package vn.viettuts.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class ResultSetExample { private static String DB_URL = "jdbc:mysql://localhost:3306/testdb"; private static String USER_NAME = "root"; private static String PASSWORD = "1234567890"; public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(DB_URL, USER_NAME, PASSWORD); // crate statement Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); / / get data from table 'student' ResultSet rs = stmt.executeQuery("SELECT * FROM student"); / getting the record of 3rd row rs.absolute(3); System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getString(3)); } catch (Exception ex) { System.out.println("connect failure!"); ex.printStackTrace(); } } } Kết quả: Ngôn Danang Thực hành: Chương 6: Ôn tập Bài tập java Trong phần này, bạn phải nắm kiến thức về:        Các mệnh đề if-else, switch-case Các vòng lặp for, while, do-while Các từ khóa break continue java Các tốn tử java Mảng (array) java File I/O java Xử lý ngoại lệ java Danh sách tập java: xử lý số Danh sách tập: Viết chương trình giải phương trình bậc 2: ax2 + bx + c = Viết chương trình tính giai thừa n Viết chương trình chuyển đổi số tự nhiên hệ số 10 thành số hệ số B (1

Ngày đăng: 27/12/2021, 03:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w