Node.js - MySQL Chèn Dữ Liệu
Xin chào các ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của Node.js và MySQL. Cụ thể, chúng ta sẽ tập trung vào cách chèn dữ liệu vào cơ sở dữ liệu MySQL sử dụng Node.js. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn, giải thích mọi thứ từng bước. Vậy, chúng ta cùng nhảy vào nào!
Node.js và MySQL là gì?
Trước khi bắt đầu, hãy nhanh chóng hiểu qua Node.js và MySQL là gì:
- Node.js: Đây là một môi trường chạy JavaScript mạnh mẽ cho phép bạn chạy JavaScript trên máy tính của bạn, không chỉ trong trình duyệt web.
- MySQL: Đây là một hệ thống cơ sở dữ liệu phổ biến giúp lưu trữ và quản lý dữ liệu.
Hãy tưởng tượng Node.js như một đầu bếp và MySQL như một tủ lạnh lớn và ngăn nắp. Chúng ta sẽ sử dụng Node.js để viết mã chèn dữ liệu vào tủ lạnh MySQL của chúng ta!
Thiết lập Môi trường
Trước tiên, chúng ta cần thiết lập bếp của chúng ta (tức là môi trường phát triển). Dưới đây là những gì bạn cần làm:
- Cài đặt Node.js từ trang web chính thức (nodejs.org)
- Cài đặt MySQL từ mysql.com
- Cài đặt module MySQL cho Node.js bằng cách chạy lệnh này trong terminal của bạn:
npm install mysql
Tuyệt vời! Bây giờ chúng ta đã sẵn sàng tất cả các nguyên liệu. Hãy bắt đầu nấu ăn... tức là lập trình!
Chèn Dữ Liệu với Node.js
Thiết lập Kết nối
Trước khi chúng ta có thể chèn dữ liệu, chúng ta cần kết nối với cơ sở dữ liệu MySQL. Dưới đây là cách chúng ta làm:
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});
connection.connect((err) => {
if (err) {
console.error('Lỗi kết nối đến cơ sở dữ liệu: ' + err.stack);
return;
}
console.log('Đã kết nối đến cơ sở dữ liệu.');
});
Hãy phân tích này:
- Chúng ta yêu cầu module MySQL mà chúng ta đã cài đặt trước đó.
- Chúng ta tạo một kết nối sử dụng
mysql.createConnection()
, cung cấp chi tiết cơ sở dữ liệu của chúng ta. - Chúng ta sử dụng
connection.connect()
để thực sự kết nối đến cơ sở dữ liệu. - Nếu có lỗi, chúng ta ghi lại nó. Ngược lại, chúng ta xác nhận rằng chúng ta đã kết nối.
Truy vấn INSERT Đơn giản
Bây giờ chúng ta đã kết nối, hãy chèn một số dữ liệu! Giả sử chúng ta có một bảng叫做 users
với các cột id
, name
, và email
. Dưới đây là cách chúng ta có thể chèn một người dùng mới:
const newUser = { name: 'John Doe', email: '[email protected]' };
connection.query('INSERT INTO users SET ?', newUser, (error, results) => {
if (error) throw error;
console.log('Người dùng mới được thêm với ID: ' + results.insertId);
});
Điều gì đang xảy ra ở đây?
- Chúng ta tạo một đối tượng
newUser
với dữ liệu chúng ta muốn chèn. - Chúng ta sử dụng
connection.query()
để gửi một truy vấn SQL đến cơ sở dữ liệu. - Dấu
?
trong truy vấn là một placeholder. MySQL thay thế nó bằng đối tượngnewUser
của chúng ta. - Nếu thành công, MySQL trả về một số kết quả, bao gồm ID của bản ghi mới.
Chèn Nhiều Bản Ghi
Nếu chúng ta muốn thêm nhiều người dùng cùng một lúc怎么办? Chúng ta cũng có thể làm điều đó!
const users = [
{ name: 'Alice', email: '[email protected]' },
{ name: 'Bob', email: '[email protected]' },
{ name: 'Charlie', email: '[email protected]' }
];
connection.query('INSERT INTO users (name, email) VALUES ?', [users.map(user => [user.name, user.email])], (error, results) => {
if (error) throw error;
console.log('Số lượng bản ghi được chèn: ' + results.affectedRows);
});
Đây là những gì mới:
- Chúng ta tạo một mảng các đối tượng người dùng.
- Chúng ta sử dụng
users.map()
để chuyển đổi mảng của chúng ta thành định dạng MySQL mong đợi. - Placeholder
?
bây giờ đại diện cho nhiều bộ giá trị. -
results.affectedRows
cho chúng ta biết số lượng bản ghi đã được chèn.
INSERT với Câu lệnh Chuẩn bị
Bây giờ, hãy nâng cấp trò chơi của chúng ta với các câu lệnh chuẩn bị. Những câu lệnh này giống như các công thức mà chúng ta có thể sử dụng đi sử dụng lại, chỉ thay đổi nguyên liệu (dữ liệu) mỗi lần.
const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const values = ['David', '[email protected]'];
connection.query(sql, values, (error, results) => {
if (error) throw error;
console.log('Người dùng mới được thêm với ID: ' + results.insertId);
});
Điều gì đặc biệt ở đây?
- Chúng ta tách câu lệnh SQL và dữ liệu của chúng ta.
- Placeholder
?
trong câu lệnh SQL đại diện cho nơi dữ liệu của chúng ta sẽ đi. - Chúng ta truyền数组
values
như một argument riêng biệt choquery()
.
Phương pháp này an toàn hơn và có thể bảo vệ chống lại các cuộc tấn công SQL injection. Nó giống như sử dụng một công thức đáng tin cậy thay vì chỉ ném nguyên liệu vào nhau!
Sử dụng Lại Câu lệnh Chuẩn bị
Sức mạnh thực sự của các câu lệnh chuẩn bị tỏa sáng khi chúng ta sử dụng chúng nhiều lần:
const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const users = [
['Eva', '[email protected]'],
['Frank', '[email protected]'],
['Grace', '[email protected]']
];
users.forEach(user => {
connection.query(sql, user, (error, results) => {
if (error) throw error;
console.log('Người dùng mới được thêm với ID: ' + results.insertId);
});
});
Ở đây, chúng ta đang sử dụng cùng một câu lệnh SQL "công thức" cho mỗi người dùng, chỉ thay đổi "nguyên liệu" (giá trị) mỗi lần.
Đóng Kết nối
Đừng quên đóng bếp khi bạn đã xong việc nấu ăn! Tức là đóng kết nối cơ sở dữ liệu khi bạn đã xong việc truy vấn:
connection.end((err) => {
if (err) {
console.error('Lỗi đóng kết nối cơ sở dữ liệu: ' + err.stack);
return;
}
console.log('Kết nối cơ sở dữ liệu đã đóng.');
});
Điều này đảm bảo rằng chúng ta không để lại bất kỳ kết nối nào mở, điều này có thể làm chậm ứng dụng hoặc máy chủ cơ sở dữ liệu của chúng ta.
Tóm tắt các Phương pháp
Dưới đây là bảng tóm tắt các phương pháp chúng ta đã học:
Phương pháp | Mô tả |
---|---|
mysql.createConnection() |
Tạo một kết nối đến cơ sở dữ liệu MySQL |
connection.connect() |
Thiết lập kết nối đến cơ sở dữ liệu |
connection.query() |
Thực thi một truy vấn SQL |
connection.end() |
Đóng kết nối cơ sở dữ liệu |
Kết luận
Chúc mừng! Bạn đã học cách chèn dữ liệu vào cơ sở dữ liệu MySQL sử dụng Node.js. Chúng ta đã bao gồm các chèn đơn giản, chèn nhiều bản ghi và thậm chí là câu lệnh chuẩn bị. Nhớ rằng, thực hành làm cho hoàn hảo, vì vậy đừng ngần ngại thử nghiệm với các khái niệm này.
Trong những năm dạy học của tôi, tôi đã phát hiện ra rằng cách tốt nhất để học là làm. Vậy, tại sao không tạo một dự án nhỏ? Có lẽ một ứng dụng đơn giản lưu trữ các công thức nấu ăn yêu thích của bạn trong cơ sở dữ liệu? Bằng cách này, bạn có thể thực hành kỹ năng mới của mình và không bao giờ mất công thức bánh quy bí mật của bà nội!
Chúc bạn lập trình vui vẻ, và mong rằng cơ sở dữ liệu của bạn luôn được chuẩn hóa chính xác!
Credits: Image by storyset