Cơ sở dữ liệu H2 - Kết nối JDBC
H2 là một cơ sở dữ liệu JAVA. Chúng tôi có thể tương tác với cơ sở dữ liệu này bằng cách sử dụng JDBC. Trong chương này, chúng ta sẽ xem cách tạo kết nối JDBC với cơ sở dữ liệu H2 và các hoạt động CRUD với cơ sở dữ liệu H2.
Nói chung, có năm bước để tạo kết nối JDBC.
Step 1 - Đăng ký trình điều khiển cơ sở dữ liệu JDBC.
Class.forName ("org.h2.Driver");
Step 2 - Mở kết nối.
Connection conn = DriverManager.getConnection ("jdbc:h2:~/test", "sa","");
Step 3 - Tạo một tuyên bố.
Statement st = conn.createStatement();
Step 4 - Thực hiện một câu lệnh và nhận tập tin kết quả.
Stmt.executeUpdate("sql statement");
Step 5 - Đang đóng kết nối.
conn.close();
Trước khi chuyển sang tạo một chương trình đầy đủ, chúng ta cần thêm h2-1.4.192.jar filetới CLASSPATH. Chúng ta có thể lấy cái nàyjar từ thư mục C:\Program Files (x86)\H2\bin.
Tạo bảng
Trong ví dụ này, chúng ta sẽ viết một chương trình để tạo bảng. Hãy xem xét một bảng có tênRegistration có các trường sau đây.
S. không | Tên cột dọc | Loại dữ liệu | CÓ GIÁ TRỊ | Khóa chính |
---|---|---|---|---|
1 | TÔI | Con số | Đúng | Đúng |
2 | Đầu tiên | Varchar (255) | Không | Không |
3 | Cuối cùng | Varchar (255) | Không | Không |
4 | Tuổi tác | Con số | Không | Không |
Sau đây là một chương trình ví dụ có tên H2jdbcCreateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcCreateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
//STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
//STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "CREATE TABLE REGISTRATION " +
"(id INTEGER not NULL, " +
" first VARCHAR(255), " +
" last VARCHAR(255), " +
" age INTEGER, " +
" PRIMARY KEY ( id ))";
stmt.executeUpdate(sql);
System.out.println("Created table in given database...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
//Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
//Handle errors for Class.forName
e.printStackTrace();
} finally {
//finally block used to close resources
try{
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se){
se.printStackTrace();
} //end finally try
} //end try
System.out.println("Goodbye!");
}
}
Lưu chương trình trên vào H2jdbcCreateDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcCreateDemo.java
\>java H2jdbcCreateDemo
Lệnh trên tạo ra kết quả sau.
Connecting to database...
Creating table in given database...
Created table in given database...
Goodbye!
Sau khi thực hiện, chúng ta có thể kiểm tra bảng được tạo bằng giao diện H2 SQL.
Chèn hồ sơ
Trong ví dụ này, chúng ta sẽ viết một chương trình để chèn các bản ghi. Hãy để chúng tôi chèn các bản ghi sau vào bảng Đăng ký.
TÔI | Đầu tiên | Cuối cùng | Tuổi tác |
---|---|---|---|
100 | Zara | Ali | 18 |
101 | Mahnaz | Fatma | 25 |
102 | Zaid | Khan | 30 |
103 | Sumit | Mital | 28 |
Sau đây là một chương trình ví dụ có tên H2jdbcInsertDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcInsertDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try{
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a selected database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
System.out.println("Connected database successfully...");
// STEP 3: Execute a query
stmt = conn.createStatement();
String sql = "INSERT INTO Registration " + "VALUES (100, 'Zara', 'Ali', 18)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (101, 'Mahnaz', 'Fatma', 25)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES (102, 'Zaid', 'Khan', 30)";
stmt.executeUpdate(sql);
sql = "INSERT INTO Registration " + "VALUES(103, 'Sumit', 'Mittal', 28)";
stmt.executeUpdate(sql);
System.out.println("Inserted records into the table...");
// STEP 4: Clean-up environment
stmt.close();
conn.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Lưu chương trình trên vào H2jdbcInsertDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcInsertDemo.java
\>java H2jdbcInsertDemo
Lệnh trên tạo ra kết quả sau.
Connecting to a selected database...
Connected database successfully...
Inserted records into the table...
Goodbye!
Đọc bản ghi
Trong ví dụ này, chúng ta sẽ viết một chương trình để đọc các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên H2jdbcRecordDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcReadDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
// STEP 4: 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);
}
// STEP 5: Clean-up environment
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Lưu chương trình trên vào H2jdbcReadDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcReadDemo.java
\>java H2jdbcReadDemo
Lệnh trên tạo ra kết quả sau.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Cập nhật hồ sơ
Trong ví dụ này, chúng tôi sẽ viết một chương trình để cập nhật các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên H2jdbcUpdateDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcUpdateDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to a database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Connected database successfully...");
stmt = conn.createStatement();
String sql = "UPDATE Registration " + "SET age = 30 WHERE id in (100, 101)";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the updated records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
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);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Lưu chương trình trên vào H2jdbcUpdateDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcUpdateDemo.java
\>java H2jdbcUpdateDemo
Lệnh trên tạo ra kết quả sau.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 101, Age: 30, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!
Xóa bản ghi
Trong ví dụ này, chúng tôi sẽ viết một chương trình để xóa các bản ghi. Hãy để chúng tôi cố gắng đọc tất cả các bản ghi từ bảngRegistration.
Sau đây là một chương trình ví dụ có tên H2jdbcDeleteDemo.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class H2jdbcDeleteDemo {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "org.h2.Driver";
static final String DB_URL = "jdbc:h2:~/test";
// Database credentials
static final String USER = "sa";
static final String PASS = "";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// STEP 1: Register JDBC driver
Class.forName(JDBC_DRIVER);
// STEP 2: Open a connection
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
// STEP 3: Execute a query
System.out.println("Creating table in given database...");
stmt = conn.createStatement();
String sql = "DELETE FROM Registration " + "WHERE id = 101";
stmt.executeUpdate(sql);
// Now you can extract all the records
// to see the remaining records
sql = "SELECT id, first, last, age FROM Registration";
ResultSet rs = stmt.executeQuery(sql);
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);
}
rs.close();
} catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
} catch(Exception e) {
// Handle errors for Class.forName
e.printStackTrace();
} finally {
// finally block used to close resources
try {
if(stmt!=null) stmt.close();
} catch(SQLException se2) {
} // nothing we can do
try {
if(conn!=null) conn.close();
} catch(SQLException se) {
se.printStackTrace();
} // end finally try
} // end try
System.out.println("Goodbye!");
}
}
Lưu chương trình trên vào H2jdbcDeleteDemo.java. Biên dịch và thực hiện chương trình trên bằng cách thực hiện các lệnh sau trong dấu nhắc lệnh.
\>javac H2jdbcDeleteDemo.java
\>java H2jdbcDeleteDemo
Lệnh trên tạo ra kết quả sau.
Connecting to a selected database...
Connected database successfully...
ID: 100, Age: 30, First: Zara, Last: Ali
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal
Goodbye!