如何使用Node.js连接到MySQL数据库

本文概述

  • 要求
  • 实现
  • 提示
几乎每种流行的编程语言(如PHP, Java, C#等)都提供了与MySql数据库连接的驱动程序。由于MySQL是世界上最受欢迎的开源数据库之一, 并且效率很高, 因此需要在Node.js中对其进行支持, 而且由于有了此模块, 你无需任何方式即可从Node.js进行访问。问题。我们正在谈论mysql模块, 它是mysql的node.js驱动程序。它使用JavaScript编写, 不需要编译, 并且100%获得MIT许可。
在本文中, 你将在几分钟内学习如何使用Node.js轻松连接到MySQL服务器中的任何数据库。
要求要使用Node.js与MySQL进行互操作(在我们的示例中, 我们使用的Xampp包括PHPMyAdmin), 你需要以下名为mysql的节点包。
你可以在Node.js命令提示符下执行以下命令, 将此包添加到项目中:
npm install mysql

然后, 你将可以要求mysql模块。
注意:此模块是异常安全的。这意味着你可以继续使用它, 即使你的一个回调函数引发了使用” uncaughtException” 或域捕获的错误。
实现有两种访问MySQL数据库的方法, 当你只有一个数据库时, 可以选择简单的连接来快速访问。你应该使用池化连接来简化共享单个连接或管理多个连接的过程。
连接简单
以下示例公开了具有其最基本组件的连接。需要mysql服务, 将凭据作为createConnection方法中的第一个参数添加, 继续连接到数据库, 执行查询, 最后关闭连接。
你可以在此处阅读官方文档中连接对象的所有可用选项。
// Get the mysql servicevar mysql = require('mysql'); // Add the credentials to access your databasevar connection = mysql.createConnection({host: 'localhost', user: '< USERNAME that tipically is root> ', password : '< PASSWORD or just use null if youre working lcocally', database : '< DATABASE-NAME> '}); // connect to mysqlconnection.connect(function(err) {// in case of errorif(err){console.log(err.code); console.log(err.fatal); }}); // Perform a query$query = 'SELECT * from MyTable LIMIT 10'; connection.query($query, function(err, rows, fields) {if(err){console.log("An error ocurred performing the query."); return; }console.log("Query succesfully executed: ", rows); }); // Close the connectionconnection.end(function(){// The connection has been closed});

池连接
var mysql = require('mysql'); var pool= mysql.createPool({host: 'example.org', user: 'bob', password : 'secret', database : 'my_dbName'}); pool.getConnection(function(err, connection) {// Use the connectionconnection.query( 'SELECT something FROM sometable', function(err, rows) {// And done with the connection.connection.release(); // Don't use the connection here, it has been returned to the pool.}); }); // The pool will emit a connection event when a new connection is made within the pool.// If you need to set session variables on the connection before it gets used, you can listen to the connection event.pool.on('connection', function (connection) {console.log("Connected"); // Set a session variable//connection.query('SET SESSION auto_increment_increment=1')}); // < < < CLOSE THE CONNECTION USING pool.end > > > // When you are done using the pool, you have to end all the connections or the Node.js // event loop will stay active until the connections are closed by the MySQL server. // This is typically done if the pool is used in a script or when trying to gracefully shutdown a server.// To end all the connections in the pool, use the end method on the pool:pool.end(function (err) {// all connections in the pool have ended});

提示你可以使用通配符来创建易于阅读和维护的代码:
connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) {// error will be an Error if one occurred during the query// results will contain the results of the query// fields will contain information about the returned results fields (if any)});

除了将这些选项作为对象传递外, 还可以将url字符串用于连接。例如:
var connection = mysql.createConnection('mysql://user:pass@host/db?debug=true& charset=BIG5_CHINESE_CI& timezone=-0700');

为了避免SQL注入攻击, 在SQL查询中使用用户提供的数据之前, 应始终对其进行转义。你可以使用mysql.escape(), connection.escape()或pool.escape()方法进行操作:
var userId = 'some user provided value'; var sql= 'SELECT * FROM users WHERE id = ' + connection.escape(userId); connection.query(sql, function(err, results) {// Results ...});

【如何使用Node.js连接到MySQL数据库】玩得开心 !

    推荐阅读