Blog: Tieudao.info
Bài 1: Giới thiệu về JDBC – JDBC Introduction
1. JDBC là gì?
JDBC viết tắt của Java Database Connectivity, cho phép các ứng dụng
Java kết nối với nhiều cơ sở dữ liệu được cài đặt trên các hệ quản trị cơ sở
dữ liệu như MySQL, SQL Server, Oracle, PostgreSQL, …
JDBC hỗ trợ các chức năng như tạo một kết nối đến một cơ sở dữ liệu,
tạo câu lệnh SQL (Structured Query Language), thực thi câu lệnh SQL, xem
và thay đổi dữ liệu.
2. Kiến trúc JDBC (JDBC Architecture)
1
Blog: Tieudao.info
3. Các thành phần JDBC thông dụng
DriverManager: Lớp này quản lý một danh sách trình điều khiển cơ sở
dữ liệu (database drivers). Lựa chọn trình điều khiển phù hợp từ yêu cầu
của ứng dụng java sử dụng giao thức giao tiếp.
Connection: Đại diện cho một kết nối đến cơ sở dữ liệu
Statement: Đối tượng dùng để thực thi các câu lệnh SQL như câu lệnh
thêm dữ liệu (insert), câu lệnh thay đổi dữ liệu (update), câu lệnh xoá dữ
liệu (delete), câu lệnh xem dữ liệu (select), …
ResultSet: Đối tượng này sẽ chứa dữ liệu sau khi chúng ta thực thi câu
lệnh xem dữ liệu. Sử dụng đối tượng này để duyệt qua tất cả dữ liệu được
chứa trong ResultSet.
SQLException: Lớp này xử lý tất cả những ngoại lệ phát sinh trong quá
trình ứng dụng java thao tác với cơ sở dữ liệu.
4. Phân loại (JDBC Drivers Types)
Loại 1 (Type 1): Sử dụng cầu nối ODBC – Open Database Connectivity
(JDBC – ODBC Bridge Driver). Sử dụng ODBC, yêu cầu bạn phải cấu hình
trên hệ thống một DSN (Data Source Name) đại diện cho cơ sở dữ liệu muốn
sử dụng.
2
Blog: Tieudao.info
Loại 2: JDBC-Native API
3
Blog: Tieudao.info
Loại 3: JDBC kết nối thông qua các ứng dụng mạng trung gian
4
Blog: Tieudao.info
Loại 4: JDBC kết nối trực tiếp với trình điều khiển cơ sở dữ liệu (100% Pure
Java)
Kết luận trình điều khiển nào nên được sử dụng (Which driver should
be used)
Nếu bạn truy cập vào một loại cơ sở dữ liệu như MySQL, SQL Server,
PostgreSQL, Oracle, … thì loại 4 nên được sử dụng.
Nếu ứng dụng Java của bạn truy cập nhiều loại cơ sở dữ liệu cùng một
lúc thì loại 3 nên được sử dụng.
Loại 2 được sử dụng trong một số tình huống khi mà loại 3 hoặc loại 4
là không có sẵn cho cơ sở dữ liệu của bạn.
Loại 1 thường được sử dụng với mục đích thử nghiệm.
5. Giới thiệu một số câu lệnh SQL thông dụng
Tạo cơ sở dữ liệu
CREATE DATABASE DATABASE_NAME;
Xoá cơ sở dữ liệu
DROP DATABASE DATABASE_NAME;
Tạo bảng
CREATE TABLE table_name
(
column_name column_data_type,
5
Blog: Tieudao.info
column_name column_data_type,
column_name column_data_type
...
);
Xoá bảng
DROP TABLE table_name;
Thêm dữ liệu
INSERT INTO table_name VALUES (columnValue1, columnValue2, ...);
Xoá dữ liệu
DELETE FROM table_name WHERE conditions;
Thay đổi dữ liệu
UPDATE table_name
SET column_name = value, column_name = value, ...
WHERE conditions;
Xem dữ liệu
SELECT column_name, column_name, ...
FROM table_name
WHERE conditions;
Tổng kết bài học giới thiệu về JDBC
JDBC là gì?
Kiến trúc JDBC
Các loại JDBC
Các câu lệnh SQL thường dùng
6
Blog: Tieudao.info
Cài đặt JDBC Driver – JDBC Environment Setup (Bài 2)
1. Cài đặt jdbc driver.
Để bắt đầu phát triển ứng dụng với JDBC, chúng ta phải cài đặt môi trường
bao gồm những bước như cài đặt Java, cài đặt hệ quản trị cơ sở dữ liệu, tạo
cơ sở dữ liệu, tạo bảng, …
2. Cài đặt Java
Nếu môi trường lập trình trên máy của bạn chưa cài dặt JDK thì bạn phải tải
JDK từ Oracle và cài đặt JDK. Chúng ta sẽ bỏ qua bước này, nếu máy của
bạn đã cài đặt JDK trước đó.
Hướng dẫn kiểm tra máy tính của bạn đã cài đăt JDK chưa? Sử dụng CMD
(Command) và gõ lệnh java -version sau đó nhấn Enter để xem kết quả
3. Cài đặt hệ quản trị cơ sở dữ liệu
Ứng dụng Java có thể làm việc với nhiều hệ quản trị cơ sở dữ liệu khác nhau
như MySQL, PostgreSQL, SQL Server, Oracle, …Chúng ta lựa chọn hệ quản
trị nào còn tuỳ thuộc vào yêu cầu thực tế của dự án. Trong phạm vi môn học
này, chúng ta sẽ cài đặt và sử dụng hệ quản trị SQL Server của Microsoft.
4. Tạo cơ sở dữ liệu
Chúng ta sẽ tạo một cơ sở dữ liệu tên EMPDB sử dụng câu lệnh sau
CREATE DATABASE EMPDB
Cách tạo cơ sở dữ liệu với SQL Server
Nhập câu lệnh và chọn Execute (Hoặc nhấn F5)
7
Blog: Tieudao.info
Sau khi tạo thành công
5. Tạo bảng
Tạo bảng employee thuộc cơ sở dữ liệu EMPDB sử dụng câu lệnh sau
use EMPDB
create table Employees (
id int not null primary key
,first nvarchar (255)
8
Blog: Tieudao.info
,last nvarchar (255)
,age int not null
)
Lưu ý trong một cửa sổ nếu chúng ta viết nhiều câu lệnh thì câu lệnh nào
muốn thực thi, chúng ta phải chọn câu lệnh đó.
Tổng kết bài cài đặt jdbc driver
Cài đặt JDK
Cài đặt Microsoft SQL Server
Tạo cơ sở dữ liệu
Tạo bảng
9
Blog: Tieudao.info
Kết nối SQL Server với java (Bài 3)
1. Kết nối sql server với java (Connect to Microsoft SQL Server via JDBC) sẽ
hướng dẫn các bạn làm thế nào để có được trình điều khiển JDBC (JDBC
Driver) và viết mã (code) cho việc kết nối đến cơ sở dữ liệu được cài đặt trên
Microsoft SQL Server từ ứng dụng Java. Nội dung bài học bao gồm tải JDBC
Driver, chuỗi kết nối cho Microsoft SQL Server (sql server jdbc connection
string), thiết lập kết nối (establish connection) và chương trình mẫu.
2. Download Microsoft JDBC driver
Tải JDBC Driver và thêm sqljdbc42.jar vào Java project sử dụng NetBeans
theo các bước sau
Chuột phải Libraries -> Chọn Add JAR/Folder…
Chỉ định thư mục chứa JDBC Driver và chọn tập tin sqljdbc42.jar
-> chọn Open
10
Blog: Tieudao.info
11
Blog: Tieudao.info
3. SQL Server JDBC connection string
Là chuỗi được sử dụng để kết nối đến SQL Server. Mỗi một hệ quản trị cơ
sở dữ liệu sẽ có một chuỗi kết nối khác nhau. Sau đây là chuỗi kết nối JDBC
dành cho Microsoft SQL Server
jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;p
roperty=value]]
Trong đó
serverName là tên máy chủ hoặc địa chỉ IP của máy đang cài đặt
Microsoft SQL Server
instanceName tên của một thể hiện để kết nối đến serverName. Nếu
tham số này không được chỉ định thì default instance sẽ được sử dụng
portNumber là cỗng ứng dụng của SQL Server, mặc định là 1433
12
Blog: Tieudao.info
property=value chỉ định tên cơ sở dữ liệu, tên và mật khẩu đăng nhập
vào SQL Server
databaseName=EMPDB; user=sa; password=sa
4. Thiết lập kết nối (establish connection)
Để
tạo
một
kết
nối,
gọi
phương
thức getConnection() của
lớp DriverManager. Sau đây là đoạn code được sử dụng để kết nối đến
localhost sử dụng user là sa, mật khẩu là sa và kết nối vào cơ sở dữ liệu tên
EMPDB
String dbURL =
"jdbc:sqlserver://localhost;databaseName=EMPDB;user=sa;password=sa";
Connection conn = DriverManager.getConnection(dbURL);
if (conn != null) {
System.out.println("Connected");
}
Để đoạn code trên được thực thi thành công, chúng ta phải thực hiện 2 việc
Việc thứ nhất: Thiết lập SQL Server cho phép đăng nhập sử dụng tài khoản
của SQL Server
Chuột phải SQL Server -> Chọn Properties
13
Blog: Tieudao.info
Chọn SQL Server and Windows Authencation mode
14
Blog: Tieudao.info
15
Blog: Tieudao.info
Khởi động lại SQL Server
Việc thứ hai: Kích hoạt và đặt mật khẩu cho tài khoản sa
16
Blog: Tieudao.info
Chuột phải sa -> Chọn Properties
17
Blog: Tieudao.info
Đặt mật khẩu
18
Blog: Tieudao.info
Kích hoạt tài khoản sa bằng cách chọn Enable tại mục Login (mặc định
tài khoản này là disable)
5. Chương trình mẫu (Example program)
package jdbc;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
19
Blog: Tieudao.info
/**
*
* @author giasutinhoc.vn
*/
public class ConnectionTest {
public static void main(String[] args) {
try {
String dbURL =
"jdbc:sqlserver://localhost;databaseName=EMPDB;user=sa;password=sa";
Connection conn = DriverManager.getConnection(dbURL);
if (conn != null) {
System.out.println("Connected");
DatabaseMetaData dm = (DatabaseMetaData) conn.getMetaData();
System.out.println("Driver name: " + dm.getDriverName());
System.out.println("Driver version: " + dm.getDriverVersion());
System.out.println("Product name: " + dm.getDatabaseProductName());
System.out.println("Product version: " +
dm.getDatabaseProductVersion());
}
} catch (SQLException ex) {
System.err.println("Cannot connect database, " + ex);
}
}
}
Khi chạy chương trình trên, chúng ta sẽ nhận được kết quả sau
20
Blog: Tieudao.info
Tổng kết bài kết nối sql server với Java
Download Microsoft JDBC driver
SQL Server JDBC connection string
Establish connection
Example program
21
Blog: Tieudao.info
JDBC Statement trong java (Bài 4)
1. JDBC Statement trong java. Khi một kết nối được thiết lập, chúng ta có
thể tương tác với cơ sở dữ liệu. JDBC Statement, PreparedStatement
và CallableStatement định nghĩa những phương thức và thuộc tính, cho phép
chúng ta thực thi câu lệnh SQL và nhận dữ liệu từ cơ sở dữ liệu của bạn.
Bảng
sau
đây
mô
tả
tóm
tắt
về Statement, PreparedStatement
và CallableStatement
JDBC Statements
Mục đích sử dụng
Hữu ích khi bạn đang sử dụng câu lệnh SQL
tĩnh khi chạy. Statement không chấp nhận
Statement
tham số (parameters).
PreparedStatement cho phép chỉ định tham số
PreparedStatement
đầu vào khi chạy.
Sử dụng khi bạn muốn truy cập stored
procedures. CallableStatement cũng chấp
CallableStatement
nhận tham số đầu vào khi chạy.
2. Đối tượng Statement (Statement Objects)
Tạo đối tượng Statement
Statement stmt = null;
try {
stmt = conn.createStatement( );
...
}
catch (SQLException e) {
...
}
22
Blog: Tieudao.info
finally {
...
}
Thực thi câu lệnh SQL (Execute an SQL statement)
boolean execute (String SQL): Trả về giá trị true nếu thực thi thành công
câu lệnh SQL; ngược lại sẽ trả về giá trị false. Sử dụng phương thức này
để thực thi các câu lệnh SQL DDL như tạo cơ sở dữ liệu, tạo bảng, …
int executeUpdate (String SQL): Trả về số dòng bị tác động khi thực thi
các câu lệnh như INSERT, UPDATE hoặc DELETE.
ResultSet executeQuery (String SQL): Trả về một đối tượng ResultSet
khi bạn thực thi câu lệnh SELECT.
Đóng đối tượng Statement (Closing Statement Object)
Statement stmt = null;
try {
stmt = conn.createStatement( );
...
}
catch (SQLException e) {
...
}
finally {
stmt.close();
}
JDBC Statement trong java – Ví dụ chương trình Java kết nối đến máy chủ localhost,
thực hiện truy cập vào cơ sở dữ liệu tên EMPDB sử dụng tài khoản sa, mật khẩu sa.
Ứng dụng thực hiện thêm mới (thực thi câu lệnh insert) một nhân viên vào
bảng Employee và thực hiện xem dữ liệu (thực thi câu lệnh select) của bảng này.
package jdbc;
23
Blog: Tieudao.info
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
*
* @author giasutinhoc.vn
*/
public class JDBCStatementExample {
// SQL Server JDBC connection string
static final String DB_URL =
"jdbc:sqlserver://localhost;databaseName=EMPDB;user=sa;password=sa";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL);
//Execute a query
System.out.println("Creating statement...");
stmt = conn.createStatement();
24
Blog: Tieudao.info
String sql = "INSERT INTO Employees VALUES (100, 18, N'gia sư', N'tin
học');";
int rows = stmt.executeUpdate(sql);
System.out.println("Rows impacted : " + rows);
// Let us select all the records and display them.
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
//Extract data from result set
while (rs.next()) {
//Retrieve by column name
int id = rs.getInt("id");
int age = rs.getInt("age");
String first = rs.getString("first");
String last = rs.getString("last");
//Display values
System.out.print("ID: " + id);
System.out.print(", Age: " + age);
System.out.print(", First: " + first);
System.out.println(", Last: " + last);
}
//Clean-up environment
rs.close();
stmt.close();
conn.close();
25