天天看點

Node.js 連接配接 MySQL

本章節我們将為大家介紹如何使用 Node.js 來連接配接 MySQL,并對資料庫進行操作。

如果你還沒有 MySQL 的基本知識,可以參考我們的教程:MySQL 教程。

本教程使用到的 Websites 表 SQL 檔案:websites.sql。

本教程使用了淘寶定制的 cnpm 指令進行安裝:

在以下執行個體中根據你的實際配置修改資料庫使用者名、及密碼及資料庫名:

var mysql = require('mysql');

var connection = mysql.createConnection({

host : 'localhost',

user : 'root',

password : '123456',

database : 'test'

});

connection.connect();

connection.query('SELECT 1 + 1 AS solution', function (error, results, fields) {

if (error) throw error;

console.log('The solution is: ', results[0].solution);

執行以下指令輸出結果為:

$ node test.js

The solution is: 2

參數

描述

host

主機位址 (預設:localhost)

  user

使用者名

  password

密碼

  port

端口号 (預設:3306)

  database

資料庫名

  charset

連接配接字元集(預設:'UTF8_GENERAL_CI',注意字元集的字母都要大寫)

  localAddress

此IP用于TCP連接配接(可選)

  socketPath

連接配接到unix域路徑,當使用 host 和 port 時會被忽略

  timezone

時區(預設:'local')

  connectTimeout

連接配接逾時(預設:不限制;機關:毫秒)

  stringifyObjects

是否序列化對象

  typeCast

是否将列值轉化為本地JavaScript類型值 (預設:true)

  queryFormat

自定義query語句格式化方法

  supportBigNumbers

資料庫支援bigint或decimal類型列時,需要設此option為true (預設:false)

  bigNumberStrings

supportBigNumbers和bigNumberStrings啟用 強制bigint或decimal列以JavaScript字元串類型傳回(預設:false)

  dateStrings

強制timestamp,datetime,data類型以字元串類型傳回,而不是JavaScript Date類型(預設:false)

  debug

開啟調試(預設:false)

  multipleStatements

是否許一個query中有多個MySQL語句 (預設:false)

  flags

用于修改連接配接标志

  ssl

使用ssl參數(與crypto.createCredenitals參數格式一至)或一個包含ssl配置檔案名稱的字元串,目前隻捆綁Amazon RDS的配置檔案

更多說明可參見:https://github.com/mysqljs/mysql

在進行資料庫操作前,你需要将本站提供的 Websites 表 SQL 檔案websites.sql 導入到你的 MySQL 資料庫中。

本教程測試的 MySQL 使用者名為 root,密碼為 123456,資料庫為 test,你需要根據自己配置情況修改。

将上面我們提供的 SQL 檔案導入資料庫後,執行以下代碼即可查詢出資料:

var mysql = require('mysql');

port: '3306',

database: 'test'

var sql = 'SELECT * FROM websites';

//查

connection.query(sql,function (err, result) {

if(err){

console.log('[SELECT ERROR] - ',err.message);

return;

}

console.log('--------------------------SELECT----------------------------');

console.log(result);

console.log('------------------------------------------------------------\n\n');

connection.end();

執行以下指令輸出就結果為:

我們可以向資料表 websties 插入資料:

var addSql = 'INSERT INTO websites(Id,name,url,alexa,country) VALUES(0,?,?,?,?)';

var addSqlParams = ['菜鳥工具', 'https://c.runoob.com','23453', 'CN'];

//增

connection.query(addSql,addSqlParams,function (err, result) {

console.log('[INSERT ERROR] - ',err.message);

console.log('--------------------------INSERT----------------------------');

//console.log('INSERT ID:',result.insertId);

console.log('INSERT ID:',result);

console.log('-----------------------------------------------------------------\n\n');

執行成功後,檢視資料表,即可以看到添加的資料:

Node.js 連接配接 MySQL

我們也可以對資料庫的資料進行修改:

var modSql = 'UPDATE websites SET name = ?,url = ? WHERE Id = ?';

var modSqlParams = ['菜鳥移動站', 'https://m.runoob.com',6];

//改

connection.query(modSql,modSqlParams,function (err, result) {

console.log('[UPDATE ERROR] - ',err.message);

console.log('--------------------------UPDATE----------------------------');

console.log('UPDATE affectedRows',result.affectedRows);

執行成功後,檢視資料表,即可以看到更新的資料:

Node.js 連接配接 MySQL

我們可以使用以下代碼來删除 id 為 6 的資料:

var delSql = 'DELETE FROM websites where id=6';

//删

connection.query(delSql,function (err, result) {

console.log('[DELETE ERROR] - ',err.message);

console.log('--------------------------DELETE----------------------------');

console.log('DELETE affectedRows',result.affectedRows);

執行成功後,檢視資料表,即可以看到 id=6 的資料已被删除:

Node.js 連接配接 MySQL