javascript – Einige Fragen zur Verwendung des MySQL-Moduls zum Herstellen einer Verbindung zur Datenbank
PHP中文网
PHP中文网 2017-05-16 13:37:28
0
1
431

Sehen Sie sich den Beispielcode so an;

const mysql = require('mysql');

exports.base = (sql, data, callback) => {
    // 创建数据库连接
    let connection = mysql.createConnection({
        host: 'localhost', //数据库所在的服务器域名或者IP
        user: 'root', //用户名
        password: '', //密码
        database: 'book' //数据库名称
    });
    // 执行连接动作
    connection.connect();
    // 执行数据库操作
    connection.query(sql, data, (err, rows) => {
        if (err) throw err;
        callback(rows);
    });
    // 关闭数据库
    connection.end();
}

So sollte es aussehen

const mysql = require('mysql');

exports.base = (sql, data, callback) => {
    // 创建数据库连接
    let connection = mysql.createConnection({
        host: 'localhost', //数据库所在的服务器域名或者IP
        user: 'root', //用户名
        password: '', //密码
        database: 'book' //数据库名称
    });
    // 执行连接动作
    connection.connect();
    // 执行数据库操作
    connection.query(sql, data, (err, rows) => {
        if (err) throw err;
        callback(rows);
        // 关闭数据库
        connection.end();
    });
    
}

Ich bin nur der Meinung, dass das Schließen der Datenbankverbindung im Rückruf der Abfrage erfolgen sollte, wenn die Abfrage nicht abgeschlossen ist. Ist es dann unangemessen, die Datenbank zu schließen? nicht ganz klar;
Ich hoffe, alle klären die Verwirrung auf

PHP中文网
PHP中文网

认证0级讲师

Antworte allen(1)
小葫芦

文档:

Closing the connection is done using end() which makes sure all remaining queries are executed before sending a quit packet to the mysql server.

所以,调用了end()不会马上关闭连接,要等剩余的查询执行完才关闭,该触发的回调还是触发。destroy()才是直接关闭连接。

具体实现就是把全部操作都放到队列里执行,end()只是把一个Quit操作放入队列,Quit操作执行完之后才真正关闭。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage