Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 3 – Kỹ thuật lập trình – Phần 2 – Tầng 3 – Java

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là trình bày phần thứ hai và tập trung vào Tầng 3 trong nội dung về kỹ thuật lập trình với ngôn ngữ Java:

  • Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
  • Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.

Class BaseDAO – Kiến trúc tổng quan

Bước 1.

Chúng ta thiết kế lớp cơ sở BaseDAO thành abstract class như sau:

Bước 2.

Chúng ta định nghĩa các thuộc tính trong class BaseDAO:

Bước 3.

Chúng ta định nghĩa phương thức khởi tạo không có tham số của class BaseDAO:

Bước 4.

Chúng ta định nghĩa các phương thức chính trong class BaseDAO:

Class BaseDAO – Phương thức getConnection()

Chúng ta đặc tả phương thức getConnection() đối với tác vụ kết nối đến PostgreSQL:

Class BaseDAO – Phương thức selectDataFromOneTable()

Bước 1.

Chúng ta đặc tả phương thức selectDataFromOneTable() đối với tác vụ truy xuất dữ liệu từ một bảng trong PostgreSQL.

Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:

Bước 2.

Mã nguồn SQL tổng quan để thực hiện truy vấn dữ liệu:

SELECT column_i, …, column_j FROM table [WHERE column_k = value_k AND … AND column_l = value_l]

Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:

Bước 3.

Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:

Kỹ thuật lập trình cần chú ý ở đây:

  • Giá trị của từng trường điều kiện được thể hiện bằng dấu “?”.
  • Chúng ta sẽ thay thế từng dấu “?” bằng giá trị tương ứng trong dataSet ở các bước sau.
  • Đây là bước đầu tiên của kỹ thuật Prepared Statement. Kỹ thuật này giúp truy xuất dữ liệu thuận tiện hơn, độc lập cơ sở dữ liệu và phần nào chống được kỹ thuật tấn công SQL Injection.

Bước 4.

Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:

Bước 5.

Chúng ta định nghĩa một thực thể của class PreparedStatement:

Đây là bước thứ hai của kỹ thuật Prepared Statement giúp chuẩn bị thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng.

Bước 6.

Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:

Kỹ thuật lập trình cần chú ý ở đây:

  • Chúng ta định nghĩa phương thức appendData() là abstract trong class BaseDAO.
  • Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức appendData() trong các lớp dẫn xuất là CategoryDAOProductDAO.

Bước 7.

Chúng ta thực hiện truy vấn dữ liệu và trả về kết quả là một thực thể của class ResultSet.

Chúng ta tiếp tục gọi phương thức mappingData() để thực hiện việc chuyển đổi dữ liệu trong thực thể này về dạng mong muốn và thêm vào results.

Kỹ thuật lập trình cần chú ý ở đây:

  • Chúng ta định nghĩa phương thức mappingData()abstract trong class BaseDAO.
  • Chúng ta đặc tả cụ thể các kỹ thuật lập trình của phương thức mappingData() trong các lớp dẫn xuất là CategoryDAOProductDAO.

Bước 8.

Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:

Class BaseDAO – Phương thức insertData()

Bước 1.

Chúng ta đặc tả phương thức insertData() đối với tác vụ thêm dữ liệu vào một bảng trong PostgreSQL.

Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:

Bước 2.

Mã nguồn SQL tổng quan để thực hiện thêm dữ liệu:

INSERT INTO table (column_i, …, column_j) VALUE (value_i, …, value_j)

Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:

Bước 3.

Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:

Bước 4.

Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:

Bước 5.

Chúng ta định nghĩa một thực thể của class PreparedStatement:

Bước 6.

Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:

Bước 7.

Chúng ta thực hiện thêm dữ liệu:

Bước 8.

Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:

Class BaseDAO – Phương thức updateData()

Bước 1.

Chúng ta đặc tả phương thức updateData() đối với tác vụ cập nhật dữ liệu trong một bảng trong PostgreSQL.

Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:

Bước 2.

Mã nguồn SQL tổng quan để thực hiện cập nhật dữ liệu:

UPDATE table SET (column_i = value_i, …, column_j = value_j) [WHERE column_k = value_k AND … AND column_l = value_l]

Chúng ta đặc tả phần thứ nhất của chuỗi SQL như sau:

Bước 3.

Chúng ta đặc tả phần thứ hai của chuỗi SQL như sau:

Bước 4.

Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:

Bước 5.

Chúng ta định nghĩa một thực thể của class PreparedStatement:

Bước 6.

Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:

Bước 7.

Chúng ta thực hiện cập nhật dữ liệu:

Bước 8.

Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:

Class BaseDAO – Phương thức deleteData()

Bước 1.

Chúng ta đặc tả phương thức deleteData() đối với tác vụ xóa dữ liệu trong một bảng trong PostgreSQL.

Chúng ta thực hiện kỹ thuật bắt lỗi kết nối và truy vấn cơ sở dữ liệu:

Bước 2.

Mã nguồn SQL tổng quan để thực hiện xóa dữ liệu:

DELETE FROM table WHERE column_k = value_k AND … AND column_l = value_l

Chúng ta đặc tả chuỗi SQL như sau:

Bước 3.

Chúng ta gọi phương thức getConnection() để thực hiện kỹ thuật kết nối cơ sở dữ liệu:

Bước 4.

Chúng ta định nghĩa một thực thể của class PreparedStatement:

Bước 5.

Chúng ta gọi phương thức appendData() để thực hiện bước thứ ba của kỹ thuật Prepared Statement là thay thế từng dấu “?” trong chuỗi SQL bởi giá trị tương ứng:

Bước 6.

Chúng ta thực hiện xóa dữ liệu:

Bước 7.

Chúng ta thực hiện đóng kết nối đến cơ sở dữ liệu:

Class CategoryDAO

Bước 1.

Chúng ta thiết kế lớp dẫn xuất CategoryDAO như sau:

Bước 2.

Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:

Kỹ thuật lập trình cần chú ý:

  • Mỗi trường trong bảng category có định dạng khác nhau. Tương ứng là từng phần tử trong danh sách data cũng có định dạng khác nhau.
  • Theo quy định về kiểu dữ liệu List trong Java thì mọi phần tử đều phải có cùng một định dạng.
  • Như vậy chúng ta định nghĩa kiểu dữ liệu cho từng phần tử trong dataObject: List<Object> data. Đây là một class nguyên thủy và là cha của mọi class được định nghĩa.

Bước 3.

Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:

Class ProductDAO

Bước 1.

Chúng ta thiết kế lớp dẫn xuất ProductDAO như sau:

Bước 2.

Chúng ta đặc tả kỹ thuật lập trình cho phương thức appendData() như sau:

Bước 3.

Chúng ta đặc tả kỹ thuật lập trình cho phương thức mappingData() như sau:

Kết luận

Trong bài này, chúng ta cùng nhau tìm hiểu việc thực hiện kỹ thuật lập trình cho phần thứ hai và tập trung vào Tầng 3.

Trong bài tiếp theo, chúng ta cùng tìm hiểu việc thực hiện kỹ thuật lập trình cho Tầng 2.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 3 – Kỹ thuật lập trình – Phần 1 – Xây dựng kiến trúc tổng quan – PHP

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là trình bày phần thứ nhất trong nội dung về kỹ thuật lập trình với ngôn ngữ PHP:

  • Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
  • Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.

Xây dựng kiến trúc tổng quan của mô hình 3 lớp

Bước 1.

Chúng ta tạo mới PHP Project trong Eclipse IDE và đặt tên là PHPThreeTiersProject.

Chúng ta tạo file index.

Chúng ta sẽ thực hiện các kỹ thuật lập trình về đặc tả giao diện Console ở Tầng 1.

Bước 2.

Chúng ta tạo class BaseService trong folder service.

Đây là lớp cơ sở của Tầng 2 về xử lý các tác vụ trung gian.

Bước 3.

Chúng ta tạo class CategoryServiceProductService trong folder service.

Đây là các lớp dẫn xuất của BaseService để thực thi cụ thể các tác vụ ở Tầng 2.

Bước 4.

Chúng ta tạo class BaseDAO trong folder dao.

Đây là lớp cơ sở của Tầng 3 về xử lý các tác vụ kết nối và truy vấn cơ sở dữ liệu.

Bước 5.

Chúng ta tạo class CategoryDAOProductDAO trong folder dao.

Đây là các lớp dẫn xuất của BaseDAO để thực thi cụ thể các tác vụ ở Tầng 3.

Thiết lập driver điều khiển để kết nối PostgreSQL

Chúng ta bỏ comment là dấu “;” tại dòng sau trong file php.ini.

extension=pdo_pgsql

Kết luận

Trong bài này, chúng ta đã cùng nhau tìm hiểu việc xây dựng kiến trúc tổng quan của mô hình 3 lớp cho một PHP Project.

Trong bài tiếp theo, chúng ta sẽ cùng thực hiện các tác vụ cụ thể.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 3 – Kỹ thuật lập trình – Phần 1 – Xây dựng kiến trúc tổng quan – Python

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là trình bày phần thứ nhất trong nội dung về kỹ thuật lập trình với ngôn ngữ Python:

  • Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
  • Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.

Xây dựng kiến trúc tổng quan của mô hình 3 lớp

Bước 1.

Chúng ta tạo mới PyDev Project trong Eclipse IDE và đặt tên là PythonThreeTiersProject.

Chúng ta tạo class Main trong package main.

Chúng ta sẽ thực hiện các kỹ thuật lập trình về đặc tả giao diện Console ở Tầng 1.

Bước 2.

Chúng ta tạo class BaseService trong package service.

Đây là lớp cơ sở của Tầng 2 về xử lý các tác vụ trung gian.

Bước 3.

Chúng ta tạo class CategoryServiceProductService trong package service.

Đây là các lớp dẫn xuất của BaseService để thực thi cụ thể các tác vụ ở Tầng 2.

Bước 4.

Chúng ta tạo class BaseDAO trong package dao.

Đây là lớp cơ sở của Tầng 3 về xử lý các tác vụ kết nối và truy vấn cơ sở dữ liệu.

Bước 5.

Chúng ta tạo class CategoryDAOProductDAO trong package dao.

Đây là các lớp dẫn xuất của BaseDAO để thực thi cụ thể các tác vụ ở Tầng 3.

Thiết lập driver điều khiển để kết nối PostgreSQL

Chúng ta cài đặt thư viện psycopg2 trong Anaconda.

Kết luận

Trong bài này, chúng ta đã cùng nhau tìm hiểu việc xây dựng kiến trúc tổng quan của mô hình 3 lớp cho một PyDev Project.

Trong bài tiếp theo, chúng ta sẽ cùng thực hiện các tác vụ cụ thể.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 2 – Kỹ thuật lập trình – Phần 1 – Xây dựng kiến trúc tổng quan – Csharp

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là trình bày phần thứ nhất trong nội dung về kỹ thuật lập trình với ngôn ngữ Csharp:

  • Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
  • Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.

Xây dựng kiến trúc tổng quan của mô hình 3 lớp

Bước 1.

Chúng ta tạo mới Console Project trong MonoDevelop và đặt tên là CsharpThreeTiersProject.

Chúng ta sẽ thực hiện các kỹ thuật lập trình về đặc tả giao diện Console ở Tầng 1.

Bước 2.

Chúng ta tạo class BaseService trong folder Service.

Đây là lớp cơ sở của Tầng 2 về xử lý các tác vụ trung gian.

Bước 3.

Chúng ta tạo class CategoryServiceProductService trong folder Service.

Đây là các lớp dẫn xuất của BaseService để thực thi cụ thể các tác vụ ở Tầng 2.

Bước 4.

Chúng ta tạo class BaseDAO trong folder Dao.

Đây là lớp cơ sở của Tầng 3 về xử lý các tác vụ kết nối và truy vấn cơ sở dữ liệu.

Bước 5.

Chúng ta tạo class CategoryDAOProductDAO trong folder Dao.

Đây là các lớp dẫn xuất của BaseDAO để thực thi cụ thể các tác vụ ở Tầng 3.

Thiết lập driver điều khiển để kết nối PostgreSQL

Bước 1.

Chúng ta download nuget npgsql 4.0.10 tại địa chỉ như trong hình.

Bước 2.

Chúng ta lựa chọn Edit → Preferences … trong project.

Bước 3.

Màn hình Preferences hiện ra.

Chúng ta lựa chọn NuGet → Sources ở cột bên trái.

Chúng ta lựa chọn nút Add để thêm nuget.

Bước 4.

Màn hình Add Package Source hiện ra.

Chúng ta nhập Name như trong hình và chỉ để file nuget download bên trên.

Chúng ta lựa chọn nút Add Source để thực hiện.

Bước 5.

Màn hình Preferences sau khi thêm nuget hiện ra.

Chúng ta lựa chọn nút OK để thực hiện.

Bước 6.

Chúng ta nhấn chuột phải vào tên project.

Chúng ta lựa chọn Add → Add NuGet Packages …

Bước 7.

Màn hình Add Packages hiện ra.

Chúng ta lựa chọn nuget source phù hợp trong combo box.

Chúng ta lựa chọn nutget Npgsql và chú ý đúng version 4.0.10 đã download bên trên.

Chúng ta lựa chọn nút Add Package để thực hiện.

Bước 8.

Màn hình chính của project sau khi được thêm nuget npgsql.

Kết luận

Trong bài này, chúng ta đã cùng nhau tìm hiểu việc xây dựng kiến trúc tổng quan của mô hình 3 lớp cho một Csharp Project.

Trong bài tiếp theo, chúng ta sẽ cùng thực hiện các tác vụ cụ thể.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 3 – Kỹ thuật lập trình – Phần 1 – Xây dựng kiến trúc tổng quan – Java

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là trình bày phần thứ nhất trong nội dung về kỹ thuật lập trình với ngôn ngữ Java:

  • Phần 1. Xây dựng kiến trúc tổng quan của mô hình 3 lớp.
  • Phần 2. Kỹ thuật lập trình cụ thể cho từng tầng trong kiến trúc mô hình 3 lớp.

Xây dựng kiến trúc tổng quan của mô hình 3 lớp

Bước 1.

Chúng ta tạo mới Java Project trong Eclipse IDE và đặt tên là JavaThreeTiersProject.

Chúng ta tạo class Main trong package main.

Chúng ta sẽ thực hiện các kỹ thuật lập trình về đặc tả giao diện Console ở Tầng 1.

Bước 2.

Chúng ta tạo class BaseService trong package service.

Đây là lớp cơ sở của Tầng 2 về xử lý các tác vụ trung gian.

Bước 3.

Chúng ta tạo class CategoryServiceProductService trong package service.

Đây là các lớp dẫn xuất của BaseService để thực thi cụ thể các tác vụ ở Tầng 2.

Bước 4.

Chúng ta tạo class BaseDAO trong package dao.

Đây là lớp cơ sở của Tầng 3 về xử lý các tác vụ kết nối và truy vấn cơ sở dữ liệu.

Bước 5.

Chúng ta tạo class CategoryDAOProductDAO trong package dao.

Đây là các lớp dẫn xuất của BaseDAO để thực thi cụ thể các tác vụ ở Tầng 3.

Thiết lập driver điều khiển để kết nối PostgreSQL

Chúng ta download và thiết lập thư viện postgresql-42.2.6.jar trong project.

Kết luận

Trong bài này, chúng ta đã cùng nhau tìm hiểu việc xây dựng kiến trúc tổng quan của mô hình 3 lớp cho một Java Project.

Trong bài tiếp theo, chúng ta sẽ cùng thực hiện các tác vụ cụ thể.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 2 – Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là thiết lập kiến trúc lập trình phần mềm theo mô hình 3 lớp.

Kiến trúc được trình bày tương đối tổng quan và cơ bản, được áp dụng với một chương trình đơn giản.

Kiến trúc tổng quan của mô hình 3 lớp

Kiến trúc tổng quan của mô hình 3 lớp, hay còn được gọi là 3 tầng, như sau:

Diễn giải nội dung chính trong từng tầng ở kiến trúc trên:

  • Tầng 1 – Giao diện người dùng. Những kỹ thuật lập trình được áp dụng ở tầng này để xây dựng những dạng giao diện phía người sử dụng: Console / Desktop Application / Web Application / …
  • Tầng 2 – Xử lý trung gian. Những kỹ thuật lập trình được áp dụng ở tầng này để thực hiện xử lý các tác vụ mà Tầng 1 yêu cầu. Kết quả trả về có thể là dữ liệu hoặc một dạng thức thông báo nào đó.
  • Tầng 3 – Kết nối và Truy vấn Cơ sở dữ liệu. Những kỹ thuật lập trình được áp dụng ở tầng này để thực hiện các tác vụ mà Tầng 2 yêu cầu về truy vấn cơ sở dữ liệu. Kết quả trả về là dữ liệu được truy xuất hoặc thông báo nào đó.

Những ưu điểm khi áp dụng việc thiết kế kiến trúc lập trình theo mô hình 3 lớp:

  • Nên có sự phân hoạch thành các tầng thực hiện trong đối với những phần mềm tương đối phức tạp và có sự phân chia giữa các thành viên trong nhóm thực hiện.
  • Những hệ thống được sử dụng để lập trình cũng như lưu trữ cơ sở dữ liệu là không nằm trên cùng một vị trí.
  • Sự phân hoạch như trên tạo ra một mối liên kết tương đối linh động và độc lập. Khi cần thiết có thể không mất quá nhiều thời gian và sự phức tạp để thay đổi mã nguồn cũng như cơ sở dữ liệu.

Kiến trúc giao tiếp giữa Tầng 3 và Cơ sở dữ liệu

Kiến trúc tổng quan về sự giao tiếp giữa Tầng 3 và Cơ sở dữ liệu như sau:

Diễn giải nội dung chính ở kiến trúc trên:

  • Trên thực tế, mỗi hệ quản trị cơ sở dữ liệu sẽ phải cung cấp các bộ driver điều khiển cho những ngôn ngữ lập trình khác nhau.
  • Bộ driver điều khiển thực chất là một bộ thư viện bao gồm các phương thức và hằng số giúp thực hiện các chức năng kết nối và truy vấn dữ liệu.
  • Những kỹ thuật lập trình ở Tầng 3 sẽ sử dụng các phương thức và hằng số phù hợp từ bộ driver điều khiển.
  • Chúng ta sẽ thiết kế các kỹ thuật lập trình ở Tầng 3 theo tư duy lập trình hướng đối tượng. Mục đích là tạo ra một liên kết tương đối linh động và độc lập. Như vậy khi cần thiết có thể không mất quá nhiều thời gian và sự phức tạp để thay đổi mã nguồn cũng như cơ sở dữ liệu.

Kiến trúc giao tiếp giữa Tầng 2 và Tầng 3

Kiến trúc tổng quan về sự giao tiếp giữa Tầng 2 và Tầng 3 như sau:

Diễn giải nội dung chính ở kiến trúc trên:

  • Việc thiết kế kiến trúc lập trình ở Tầng 2 và Tầng 3 như trên đã áp dụng toàn bộ các đặc trưng của lập trình hướng đối tượng: Tính đóng gói (encapsulation) và che giấu thông tin (information hiding); Tính trừu tượng (abstraction); Tính kế thừa (inheritance); Tính đa hình (polymorphism).
  • Chúng ta tạo ra một Liên kết yếu (weak dependency) giúp cho sự phụ thuộc giữa các đối tượng ở hai tầng giảm đi. Mục đích là tạo ra một liên kết tương đối linh động và độc lập. Như vậy khi cần thiết có thể không mất quá nhiều thời gian và sự phức tạp để thay đổi mã nguồn.
  • Lớp cơ sở ở Tầng 3 là BaseDAO bao gồm: (i) các thuộc tính connection lưu trữ thông tin để kết nối đến cơ sở dữ liệu; (ii) 04 phương thức cơ bản để truy xuất và điều chỉnh dữ liệu trong từng bảng của cơ sở dữ liệu. Có 02 lớp dẫn xuất từ lớp cơ sở này: (i) CategoryDAO tương ứng với bảng dữ liệu category; (ii) ProductDAO tương ứng với bảng dữ liệu product.
  • Lớp cơ sở ở Tầng 2 là BaseService bao gồm: (i) thuộc tính baseDAO được khai báo là một thực thể của BaseDAO – mà cụ thể hơn sẽ là CategoryDAO hoặc ProductDAO; (ii) 04 phương thức cơ bản tương ứng với các phương thức được định nghĩa trong BaseDAO. Có 02 lớp dẫn xuất từ lớp cơ sở này: (i) CategoryService tương ứng với lớp cơ sở CategoryDAO ở Tầng 3; (ii) ProductService tương ứng với lớp cơ sở ProductDAO ở Tầng 3.

Kiến trúc giao tiếp giữa Tầng 1 và Tầng 2

Kiến trúc tổng quan về sự giao tiếp giữa Tầng 1 và Tầng 2 như sau:

Việc thiết kế kiến trúc như trên hoàn toàn tương tự như kiến trúc giao tiếp giữa Tầng 2 và Tầng 3.

Kết luận

Trong bài này, chúng ta cùng nhau tìm hiểu việc thiết kế kiến trúc lập trình theo mô hình 3 lớp.

Trong những bài tiếp theo, chúng ta sẽ chính thức bắt tay vào hiện thực các thành phần của mô hình.

Chúng ta cũng có thể tự do sáng tạo thêm những thành phần mới cho mô hình với một chú ý nhỏ: cần cân bằng giữa sự phức tạp của mô hình và khả năng quản lý cũng như tốc độ thực thi của chương trình.

Thiết kế mô hình 3 lớp kết hợp Kết nối và truy vấn Cơ sở dữ liệu theo phương pháp Prepared Statement – Nội dung 1 – Thiết lập Cơ sở dữ liệu trong PostgreSQL

Giới thiệu

Trong nhóm bài này, chúng ta cùng nhau tìm hiểu việc thiết kế một kiến trúc để lập trình phần mềm theo mô hình 3 lớp.

Những nội dung chính sẽ được trình bày trong nhóm bài:

  • Thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng trong toàn bộ nhóm bài. Chúng ta có thể tham khảo để tự thực hiện đối với những hệ quản trị cơ sở dữ liệu khác như: MySQL / MariaDB; SQLServer; Oracle; …
  • Thiết kế kiến trúc lập trình phần mềm theo mô hình 3 lớp. Chúng ta cũng sẽ áp dụng một chút kiến thức về lập trình hướng đối tượng ở đây.
  • Kỹ thuật kết nối và truy vấn cơ sở dữ liệu theo phương pháp Prepared Statement. Đây là phương pháp được ưu tiên khuyến khích hơn phương pháp thông thường.
  • Những kỹ thuật lập trình cụ thể sẽ được trình bày lần lượt với các ngôn ngữ: Java / C# / Python / PHP.

Nội dung chính của bài này là thiết lập một cơ sở dữ liệu cơ bản trong PostgreSQL để áp dụng cho toàn bộ nhóm bài.

Tạo lập Cơ sở dữ liệu Quản lý sản phẩm

Bước 1.

Chúng ta thiết kế 02 bảng dữ liệu như sau:

Bước 2.

Mã nguồn SQL cụ thể để tạo dựng 02 bảng dữ liệu trên như sau:

Thiết lập Cơ sở dữ liệu trong PostgreSQL

Bước 1.

Chúng ta khởi động Control Panel của LAPP Stack.

Chúng ta lựa chọn nút Start để khởi động các dịch vụ: Apache Web Server / PostgreSQL Database.

Bước 2.

Chúng ta mở giao diện của hệ quản trị phpPgAdmin tại địa chỉ:

127.0.0.1:8080/phppgadmin

Bước 3.

Chúng ta thực hiện đăng nhập vào PostgreSQL.

Bước 4.

Giao diện chính tại tab Databases của phpPgAdmin sau khi đăng nhập thành công.

Chúng ta nhận thấy địa chỉ chính thức của PostgreSQL:

localhost:5433

Chúng ta lựa chọn chức năng Create database để tạo cơ sở dữ liệu mới.

Bước 5.

Màn hình Create database hiện ra.

Chúng ta nhập thông tin như trong hình.

Chúng ta lựa chọn nút Create để thực hiện.

Bước 6.

Giao diện chính tại tab Databases của phpPgAdmin sau khi tạo cơ sở dữ liệu mới thành công.

Chúng ta lựa chọn cơ sở dữ liệu qlsp tại cột Database trong bảng.

Bước 7.

Giao diện chính tại tab Schemas của cơ sở dữ liệu qlsp.

Bước 8.

Chúng ta lựa chọn tab SQL trong giao diện của cơ sở dữ liệu qlsp.

Chúng ta lựa chọn file qlsp.sql chứa đụng mã nguồn SQL bên trên.

Chúng ta lựa chọn nút Execute để thực hiện đoạn mã nguồn SQL.

Bước 9.

Màn hình thông báo mã nguồn SQL trong file qlsp.sql đã được thực thi.

Bước 10.

Chúng ta kiểm tra lại giao diện của cơ sở dữ liệu qlsp.

Chúng ta nhận thấy 02 bảng dữ liệu đã được tạo dựng.

Kết luận

Trong bài này, chúng ta đã cùng thực hiện tạo dựng 02 bảng dữ liệu cơ bản trong PostgreSQL.

Nội dung này sẽ được sử dụng trong những bài tiếp theo của nhóm bài này.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL – PHP

Giới thiệu

Trong nội dung bài này, chúng ta cùng nhau tìm hiểu kỹ thuật cơ bản trong PHP để kết nối và truy vấn Cơ sở dữ liệu MySQL.

Những nội dung chính được trình bày trong bài này:

  • Thiết kế một bảng cơ sở dữ liệu đơn giản gồm một số các trường cơ bản.
  • Cấu hình Hệ quản trị phpMyAdmin để thực hiện việc kết nối và truy xuất được thuận tiện.
  • Kỹ thuật cơ bản trong PHP bao gồm việc thêm mới dữ liệu và truy xuất toàn bộ dữ liệu trong bảng.

Thiết kế Cơ sở dữ liệu đơn giản

Chúng ta thiết kế bảng users gồm các trường như sau:

Mã nguồn SQL để thực hiện tạo bảng users trong MySQL:

Chúng ta lưu thành file Create_MySQL.sql.

Cấu hình Hệ quản trị phpMyAdmin

Bước 1.

Chúng ta khởi động LAMP Stack Control Panel.

Chúng ta start service MySQL DatabaseApache Web Server.

Bước 2.

Chúng ta mở giao diện phpMyAdmin trên trình duyệt với địa chỉ:

127.0.0.1:8080/phpmyadmin/

Chúng ta nhập usernamepassword để đăng nhập vào phpMyAdmin.

Ví dụ ở đây là:

Username : root

Password : adminadmin

Bước 3.

Giao diện màn hình chính của phpMyAdmin hiện ra.

Chúng ta nhận thấy địa chỉ chính thức của MySQL: localhost:3306.

Bước 4.

Chúng ta mở tab Databases trong phpMyAdmin.

Chúng ta nhập thông tin tạo database mới trong mục Create database:

firstdb

utf8_unicode_ci

Chúng ta lựa chọn nút Create để tạo database firstdb.

Bước 5.

Giao diện của database firstdb hiện ra.

Bước 6.

Chúng ta mở tab Import trong giao diện của firstdb.

Chúng ta lựa chọn file Create_MySQL.sql đã được tạo ra bên trên.

Chúng ta lựa chọn nút Go để thực hiện Import.

Bước 7.

Giao diện firstdb sau khi đã thực hiện import và tạo mới bảng users:

Bước 8.

Chúng ta lựa chọn bảng users.

Chúng ta lựa chọn tab Structure trong giao diện này:

Bước 9.

Chúng ta thực hiện stop service MySQL Database.

Chúng ta lựa chọn nút Configure để cấu hình các thông số.

Bước 10.

Cửa sổ Configure MySQL Database hiện ra.

Chúng ta nhận thấy Port 3306 của MySQL.

Chúng ta có thể để nguyên hoặc điều chỉnh theo yêu cầu thực tiễn.

Chúng ta lựa chọn nút Open Conf File để mở file cấu hình my.cnf.

Bước 11.

Nội dung file my.cnf hiện ra.

Chúng ta loại bỏ dòng “skip-name-resolve …”.

Chúng ta lưu lại file này.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL

Bước 1.

Chúng ta tạo mới PHP Project trong Eclipse IDE và đặt tên là PHPFirstDBProject.

Bước 2.

Chúng ta tạo mới class DBConnection trong folder connection.

Bước 3.

Chúng ta định nghĩa các thuộc tính trong class DBConnection.

Ý nghĩa các thuộc tính như sau:

  • Thuộc tính $dbHost$dbPort lưu trữ thông tin về địa chỉ và cổng của MySQL.
  • Thuộc tính $dbName lưu trữ thông tin về tên của database. Ở đây chúng ta sử dụng database firstdb.
  • Thuộc tính $username$password lưu trữ thông tin về tên đăng nhập và mật khẩu để vào được MySQL.
  • Thuộc tính $conn lưu trữ thông tin về kết nối và truy xuất đến cơ sở dữ liệu.

Bước 4.

Chúng ta định nghĩa phương thức khởi tạo trong class DBConnection.

Bước 5.

Chúng ta định nghĩa phương thức đặc tả kết nối đến cơ sở dữ liệu.

Bước 6.

Chúng ta định nghĩa phương thức truy xuất để lấy dữ liệu.

Những kỹ thuật lập trình cần chú ý:

  • Phương thức này có 02 tham số. Tham số $sqlQuery lưu trữ câu truy vấn SQLSELECT …”. Tham số $results là một cấu trúc array dùng lưu trữ dữ liệu được trả về: (i) từ_khóa lưu trữ dữ liệu của trường khóa chính id trong bảng users; (ii) giá_trị là một cấu trúc array con có thứ tự trước sau lưu trữ dữ liệu của những trường còn lại trong bảng users.
  • Bước 1. Chúng ta thực hiện gọi phương thức kết nối: $this->getConnection().
  • Bước 2. Chúng ta thực hiện truy xuất dữ liệu và trả về một resultSet: $records = $this- >conn->query($sqlQuery).
  • Bước 3. Chúng ta lần lượt truy xuất từng bộ dữ liệu trong resultSet: while ($row = $records- >fetch_assoc()) {}.
  • Bước 4. Chúng ta thêm bộ dữ liệu hiện tại vào một phần tử trong $results. Chú ý: vị trí tương ứng và kiểu dữ liệu của trường tương ứng trong cơ sở dữ liệu.
  • Bước 5. Chúng ta thực hiện đóng phát biểu và kết nối: $records->free(); $this->conn- >close().

Bước 7.

Chúng ta định nghĩa phương thức thêm mới / chỉnh sửa / xóa bộ dữ liệu.

Bước 8.

Chúng ta thực hiện import những thư viện phù hợp trong class DBConnection để thực hiện định nghĩa các phương thức trên:

Bước 9.

Chúng ta thực hiện tạo thực thể của DBConnection trong file index.php.

Bước 10.

Chúng thực hiện thử nghiệm thêm mới bộ dữ liệu.

Bước 11.

Chúng ta kiểm tra trong phpMyAdmin xem bộ dữ liệu mới đã được thêm thành công hay chưa.

Bước 12.

Chúng thực hiện thử nghiệm truy xuất toàn bộ dữ liệu.

Bước 13.

Chúng ta thực thi project để kiểm tra kết quả.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật cơ bản để kết nối và truy xuất đến Cơ sở dữ liệu MySQL thực hiện bằng ngôn ngữ PHP.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL – Python

Giới thiệu

Trong nội dung bài này, chúng ta cùng nhau tìm hiểu kỹ thuật cơ bản trong Python để kết nối và truy vấn Cơ sở dữ liệu MySQL.

Những nội dung chính được trình bày trong bài này:

  • Thiết kế một bảng cơ sở dữ liệu đơn giản gồm một số các trường cơ bản.
  • Cấu hình Hệ quản trị phpMyAdmin để thực hiện việc kết nối và truy xuất được thuận tiện.
  • Kỹ thuật cơ bản trong Python bao gồm việc thêm mới dữ liệu và truy xuất toàn bộ dữ liệu trong bảng.

Thiết kế Cơ sở dữ liệu đơn giản

Chúng ta thiết kế bảng users gồm các trường như sau:

Mã nguồn SQL để thực hiện tạo bảng users trong MySQL:

Chúng ta lưu thành file Create_MySQL.sql.

Cấu hình Hệ quản trị phpMyAdmin

Bước 1.

Chúng ta khởi động LAMP Stack Control Panel.

Chúng ta start service MySQL DatabaseApache Web Server.

Bước 2.

Chúng ta mở giao diện phpMyAdmin trên trình duyệt với địa chỉ:

127.0.0.1:8080/phpmyadmin/

Chúng ta nhập usernamepassword để đăng nhập vào phpMyAdmin.

Ví dụ ở đây là:

Username : root

Password : adminadmin

Bước 3.

Giao diện màn hình chính của phpMyAdmin hiện ra.

Chúng ta nhận thấy địa chỉ chính thức của MySQL: localhost:3306.

Bước 4.

Chúng ta mở tab Databases trong phpMyAdmin.

Chúng ta nhập thông tin tạo database mới trong mục Create database:

firstdb

utf8_unicode_ci

Chúng ta lựa chọn nút Create để tạo database firstdb.

Bước 5.

Giao diện của database firstdb hiện ra.

Bước 6.

Chúng ta mở tab Import trong giao diện của firstdb.

Chúng ta lựa chọn file Create_MySQL.sql đã được tạo ra bên trên.

Chúng ta lựa chọn nút Go để thực hiện Import.

Bước 7.

Giao diện firstdb sau khi đã thực hiện import và tạo mới bảng users:

Bước 8.

Chúng ta lựa chọn bảng users.

Chúng ta lựa chọn tab Structure trong giao diện này:

Bước 9.

Chúng ta thực hiện stop service MySQL Database.

Chúng ta lựa chọn nút Configure để cấu hình các thông số.

Bước 10.

Cửa sổ Configure MySQL Database hiện ra.

Chúng ta nhận thấy Port 3306 của MySQL.

Chúng ta có thể để nguyên hoặc điều chỉnh theo yêu cầu thực tiễn.

Chúng ta lựa chọn nút Open Conf File để mở file cấu hình my.cnf.

Bước 11.

Nội dung file my.cnf hiện ra.

Chúng ta loại bỏ dòng “skip-name-resolve …”.

Chúng ta lưu lại file này.

Bước 12.

Chúng ta thực hiện cài đặt MySQL Connector/Python trong Anaconda.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL

Bước 1.

Chúng ta tạo mới PyDev Project trong Eclipse IDE và đặt tên là PythonFirstDBProject.

Bước 2.

Chúng ta tạo mới module DBConnection trong package connection.

Bước 3.

Chúng ta định nghĩa các thuộc tính trong phương thức khởi tạo trong module DBConnection.

Ý nghĩa các thuộc tính như sau:

  • Thuộc tính dbHostdbPort lưu trữ thông tin về địa chỉ và cổng của MySQL.
  • Thuộc tính dbName lưu trữ thông tin về tên của database. Ở đây chúng ta sử dụng database firstdb.
  • Thuộc tính usernamepassword lưu trữ thông tin về tên đăng nhập và mật khẩu để vào được MySQL.
  • Thuộc tính conn lưu trữ thông tin về kết nối và truy xuất đến cơ sở dữ liệu.

Bước 4.

Chúng ta định nghĩa phương thức đặc tả kết nối đến cơ sở dữ liệu.

Bước 5.

Chúng ta định nghĩa phương thức truy xuất để lấy dữ liệu.

Những kỹ thuật lập trình cần chú ý:

  • Phương thức này có 02 tham số. Tham số sqlQuery lưu trữ câu truy vấn SQLSELECT …”. Tham số results là một cấu trúc Dictionary dùng lưu trữ dữ liệu được trả về: (i) từ_khóa lưu trữ dữ liệu của trường khóa chính id trong bảng users; (ii) giá_trị là một danh sách deque có thứ tự trước sau lưu trữ dữ liệu của những trường còn lại trong bảng users.
  • Bước 1. Chúng ta thực hiện gọi phương thức kết nối: self.getConnection().
  • Bước 2. Chúng ta thực hiện tạo một phát biểu: cursor = self.Conn.cursor().
  • Bước 3. Chúng ta thực hiện truy xuất dữ liệu: cursor.execute(sqlQuery).
  • Bước 4. Chúng ta trả về một resultSet: records = cursor.fetchall().
  • Bước 5. Chúng ta lần lượt truy xuất từng bộ dữ liệu trong resultSet: for row in records.
  • Bước 6. Chúng ta thêm bộ dữ liệu hiện tại vào một phần tử trong resultSet. Chú ý: vị trí tương ứng và kiểu dữ liệu của trường tương ứng trong cơ sở dữ liệu.
  • Bước 7. Chúng ta thực hiện đóng phát biểu và kết nối: cursor.close(); self.Conn.close().

Bước 6.

Chúng ta định nghĩa phương thức thêm mới / chỉnh sửa / xóa bộ dữ liệu.

Bước 7.

Chúng ta thực hiện import những thư viện phù hợp trong module DBConnection để thực hiện định nghĩa các phương thức trên:

Bước 8.

Chúng ta thực hiện tạo thực thể của DBConnection trong module Main.

Bước 9.

Chúng thực hiện thử nghiệm thêm mới bộ dữ liệu.

Bước 10.

Chúng ta kiểm tra trong phpMyAdmin xem bộ dữ liệu mới đã được thêm thành công hay chưa.

Bước 11.

Chúng thực hiện thử nghiệm truy xuất toàn bộ dữ liệu.

Bước 12.

Chúng ta thực thi project để kiểm tra kết quả.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật cơ bản để kết nối và truy xuất đến Cơ sở dữ liệu MySQL thực hiện bằng ngôn ngữ Python.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL – Csharp

Giới thiệu

Trong nội dung bài này, chúng ta cùng nhau tìm hiểu kỹ thuật cơ bản trong Csharp để kết nối và truy vấn Cơ sở dữ liệu MySQL.

Những nội dung chính được trình bày trong bài này:

  • Thiết kế một bảng cơ sở dữ liệu đơn giản gồm một số các trường cơ bản.
  • Cấu hình Hệ quản trị phpMyAdmin để thực hiện việc kết nối và truy xuất được thuận tiện.
  • Kỹ thuật cơ bản trong Csharp bao gồm việc thêm mới dữ liệu và truy xuất toàn bộ dữ liệu trong bảng.

Thiết kế Cơ sở dữ liệu đơn giản

Chúng ta thiết kế bảng users gồm các trường như sau:

Mã nguồn SQL để thực hiện tạo bảng users trong MySQL:

Chúng ta lưu thành file Create_MySQL.sql.

Cấu hình Hệ quản trị phpMyAdmin

Bước 1.

Chúng ta khởi động LAMP Stack Control Panel.

Chúng ta start service MySQL DatabaseApache Web Server.

Bước 2.

Chúng ta mở giao diện phpMyAdmin trên trình duyệt với địa chỉ:

127.0.0.1:8080/phpmyadmin/

Chúng ta nhập usernamepassword để đăng nhập vào phpMyAdmin.

Ví dụ ở đây là:

Username : root

Password : adminadmin

Bước 3.

Giao diện màn hình chính của phpMyAdmin hiện ra.

Chúng ta nhận thấy địa chỉ chính thức của MySQL: localhost:3306.

Bước 4.

Chúng ta mở tab Databases trong phpMyAdmin.

Chúng ta nhập thông tin tạo database mới trong mục Create database:

firstdb

utf8_unicode_ci

Chúng ta lựa chọn nút Create để tạo database firstdb.

Bước 5.

Giao diện của database firstdb hiện ra.

Bước 6.

Chúng ta mở tab Import trong giao diện của firstdb.

Chúng ta lựa chọn file Create_MySQL.sql đã được tạo ra bên trên.

Chúng ta lựa chọn nút Go để thực hiện Import.

Bước 7.

Giao diện firstdb sau khi đã thực hiện import và tạo mới bảng users:

Bước 8.

Chúng ta lựa chọn bảng users.

Chúng ta lựa chọn tab Structure trong giao diện này:

Bước 9.

Chúng ta thực hiện stop service MySQL Database.

Chúng ta lựa chọn nút Configure để cấu hình các thông số.

Bước 10.

Cửa sổ Configure MySQL Database hiện ra.

Chúng ta nhận thấy Port 3306 của MySQL.

Chúng ta có thể để nguyên hoặc điều chỉnh theo yêu cầu thực tiễn.

Chúng ta lựa chọn nút Open Conf File để mở file cấu hình my.cnf.

Bước 11.

Nội dung file my.cnf hiện ra.

Chúng ta loại bỏ dòng “skip-name-resolve …”.

Chúng ta lưu lại file này.

Bước 12.

Chúng ta thực hiện download MySQL Connector/NET 8.0.16 tại địa chỉ như sau:

Bước 13.

Chúng ta giải nén file zip được download:

Bước 14.

Chúng ta chú ý đến file MySQL.Data.dll trong thư mục v4.5.2 được giải nén.

Kỹ thuật cơ bản để kết nối và truy xuất Cơ sở dữ liệu MySQL

Bước 1.

Chúng ta tạo mới Console Project trong MonoDevelop và đặt tên là CsharpFirstDBProject.

Bước 2.

Chúng ta tạo mới class DBConnection trong folder Connection.

Bước 3.

Chúng ta nhấn chuột phải vào mục References và lựa chọn Edit References.

Bước 4.

Cửa sổ Edit References hiện ra.

Chúng ta nhập thông tin như sau:

Chúng ta lựa chọn nút Browse để lựa chọn thư viện.

Bước 5.

Cửa sổ Select Assembly hiện ra.

Chúng ta lựa chọn file MySQL.Data.dll trong thư mục v.4.5.2 bên trên.

Chúng ta lựa chọn nút Open để thực hiện.

Bước 6.

Cửa sổ Edit References hiện ra.

Chúng ta lựa chọn nút OK để thực hiện.

Bước 7.

Màn hình chính của project hiện ra.

Chúng ta nhận thấy thư viện MySQL.Data đã xuất hiện trong mục References.

Bước 8.

Chúng ta tiếp tục thực hiện thêm thư viện System.Data vào References.

Bước 9.

Chúng ta định nghĩa các thuộc tính trong class DBConnection.

Ý nghĩa các thuộc tính như sau:

  • Thuộc tính dbHostdbPort lưu trữ thông tin về địa chỉ và cổng của MySQL.
  • Thuộc tính dbName lưu trữ thông tin về tên của database. Ở đây chúng ta sử dụng database firstdb.
  • Thuộc tính usernamepassword lưu trữ thông tin về tên đăng nhập và mật khẩu để vào được MySQL.
  • Thuộc tính conn lưu trữ thông tin về kết nối và truy xuất đến cơ sở dữ liệu.

Bước 10.

Chúng ta định nghĩa phương thức khởi tạo trong class DBConnection.

Bước 11.

Chúng ta định nghĩa phương thức đặc tả kết nối đến cơ sở dữ liệu.

Bước 12.

Chúng ta định nghĩa phương thức truy xuất để lấy dữ liệu.

Những kỹ thuật lập trình cần chú ý:

  • Phương thức này có 02 tham số. Tham số sqlQuery lưu trữ câu truy vấn SQLSELECT …”. Tham số results là một cấu trúc Dictionary dùng lưu trữ dữ liệu được trả về: (i) từ_khóa lưu trữ dữ liệu của trường khóa chính id trong bảng users; (ii) giá_trị là một danh sách có thứ tự trước sau lưu trữ dữ liệu của những trường còn lại trong bảng users.
  • Bước 1. Chúng ta thực hiện gọi phương thức kết nối: GetConnection().
  • Bước 2. Chúng ta thực hiện tạo một phát biểu: MySqlCommand cmd = new MySqlCommand(sqlQuery, conn).
  • Bước 3. Chúng ta thực hiện truy xuất dữ liệu và trả về một data reader: MySqlDataReader rdr = cmd.ExecuteReader().
  • Bước 4. Chúng ta lần lượt truy xuất từng bộ dữ liệu trong data reader: while (rdr.Read()) {}.
  • Bước 5. Chúng ta thêm bộ dữ liệu hiện tại vào một phần tử trong data reader. Chú ý: vị trí tương ứng và kiểu dữ liệu của trường tương ứng trong cơ sở dữ liệu.
  • Bước 6. Chúng ta thực hiện đóng phát biểu và kết nối: rdr.Close(); conn.Close().

Bước 13.

Chúng ta định nghĩa phương thức thêm mới / chỉnh sửa / xóa bộ dữ liệu.

Bước 14.

Chúng ta thực hiện import những thư viện phù hợp trong class DBConnection để thực hiện định nghĩa các phương thức trên:

Bước 15.

Chúng ta thực hiện tạo thực thể của DBConnection trong phương thức Main() của class Program.

Bước 16.

Chúng thực hiện thử nghiệm thêm mới bộ dữ liệu.

Bước 17.

Chúng ta kiểm tra trong phpMyAdmin xem bộ dữ liệu mới đã được thêm thành công hay chưa.

Bước 18.

Chúng thực hiện thử nghiệm truy xuất toàn bộ dữ liệu.

Bước 19.

Chúng ta thực thi project để kiểm tra kết quả.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật cơ bản để kết nối và truy xuất đến Cơ sở dữ liệu MySQL thực hiện bằng ngôn ngữ Csharp.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.