个性化阅读
专注于IT技术分析

如何使用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 service
var mysql = require('mysql');

// Add the credentials to access your database
var 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 mysql
connection.connect(function(err) {
    // in case of error
    if(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 connection
connection.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 connection
    connection.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 ...
});

玩得开心 !

赞(0)
未经允许不得转载:srcmini » 如何使用Node.js连接到MySQL数据库

评论 抢沙发

评论前必须登录!