在JavaScript中直接连接数据库并进行增删改查(CRUD)操作通常不推荐这么做,因为JavaScript(尤其是前端JavaScript)无法直接连接数据库,出于安全性和架构设计考虑。一般来说,应该通过后端服务(例如Node.js、Express等)来与数据库进行交互,前端通过API请求与后端通信。
以下是一个完整的示例,展示如何使用Node.js与MySQL数据库进行CRUD操作:
- 安装必要的依赖
首先,确保你已经安装了Node.js。然后使用以下命令初始化一个新的Node.js项目并安装依赖:
npm init -y
npm install express mysql2 body-parser
- 创建数据库(MySQL)
在MySQL中创建一个数据库和表,例如:
CREATE DATABASE sportsms;USE sportsms;CREATE TABLE athletes (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),age INT,event VARCHAR(100)
);
- 创建Node.js应用
创建一个名为 app.js 的文件,示例代码如下:
const express = require('express');
const mysql = require('mysql2');
const bodyParser = require('body-parser');const app = express();
const port = 3000;// 使用body-parser来解析JSON请求体
app.use(bodyParser.json());// 创建数据库连接池
const db = mysql.createPool({host: 'localhost',user: 'root', // MySQL用户名password: '', // MySQL密码database: 'sportsms' // 数据库名称
});// 测试数据库连接
db.getConnection((err, connection) => {if (err) {console.error('数据库连接失败:', err.stack);return;}console.log('成功连接到数据库');connection.release();
});// 创建选手(增)
app.post('/athletes', (req, res) => {const { name, age, event } = req.body;const query = 'INSERT INTO athletes (name, age, event) VALUES (?, ?, ?)';db.query(query, [name, age, event], (err, result) => {if (err) {return res.status(500).json({ error: '数据库错误', details: err });}res.status(201).json({ id: result.insertId, name, age, event });});
});// 获取所有选手(查)
app.get('/athletes', (req, res) => {db.query('SELECT * FROM athletes', (err, results) => {if (err) {return res.status(500).json({ error: '数据库错误', details: err });}res.json(results);});
});// 获取单个选手(查)
app.get('/athletes/:id', (req, res) => {const { id } = req.params;db.query('SELECT * FROM athletes WHERE id = ?', [id], (err, results) => {if (err) {return res.status(500).json({ error: '数据库错误', details: err });}if (results.length === 0) {return res.status(404).json({ error: '选手未找到' });}res.json(results[0]);});
});// 更新选手(改)
app.put('/athletes/:id', (req, res) => {const { id } = req.params;const { name, age, event } = req.body;const query = 'UPDATE athletes SET name = ?, age = ?, event = ? WHERE id = ?';db.query(query, [name, age, event, id], (err, result) => {if (err) {return res.status(500).json({ error: '数据库错误', details: err });}if (result.affectedRows === 0) {return res.status(404).json({ error: '选手未找到' });}res.json({ id, name, age, event });});
});// 删除选手(删)
app.delete('/athletes/:id', (req, res) => {const { id } = req.params;db.query('DELETE FROM athletes WHERE id = ?', [id], (err, result) => {if (err) {return res.status(500).json({ error: '数据库错误', details: err });}if (result.affectedRows === 0) {return res.status(404).json({ error: '选手未找到' });}res.status(204).send();});
});// 启动服务器
app.listen(port, () => {console.log(`服务器正在运行,访问 http://localhost:${port}`);
});
- 启动服务器
在命令行中,运行以下命令启动服务器:
node app.js
- 测试API
你可以使用工具如Postman或者直接用 curl 来测试API。以下是各个操作的示例请求:
增 - 创建选手:
POST /athletes
请求体(JSON):
{"name": "John Doe","age": 25,"event": "100m Sprint"
}
查 - 获取所有选手:
GET /athletes
响应(JSON):
[{"id": 1,"name": "John Doe","age": 25,"event": "100m Sprint"}
]
查 - 获取单个选手:
GET /athletes/1
响应(JSON):
{"id": 1,"name": "John Doe","age": 25,"event": "100m Sprint"
}
改 - 更新选手信息:
PUT /athletes/1
请求体(JSON):
{"name": "John Doe","age": 26,"event": "200m Sprint"
}
删 - 删除选手:
DELETE /athletes/1
这就是一个简单的Node.js和MySQL连接并进行增删改查(CRUD)操作的完整示例。你可以通过前端使用JavaScript发送HTTP请求与后端交互。注意,直接在前端处理数据库操作是不安全的,前端应仅通过API请求与后端交互。