如何使用Node.js呼叫SQL預存程序並取得結果

PHPz
發布: 2023-04-07 10:09:17
原創
1237 人瀏覽過

Node.js作為一種伺服器端JavaScript運行環境,已經成為了一種非常受歡迎的技術。對於Node.js的開發者來說,呼叫資料庫預存程序是進行複雜資料庫查詢的有效方法。然而,與其他程式語言相比,Node.js如何正確地呼叫SQL預存程序?

本文將介紹如何使用Node.js呼叫SQL預存程序並取得結果。

連接資料庫

在使用Node.js連接資料庫之前,需要安裝對應的Node.js資料庫驅動程式。本文以mysqljs函式庫為例,首先需要在Node.js專案中引入這個函式庫:

var mysql = require('mysql');
登入後複製

在連接資料庫之前,需要先建立一個MySQL連線池。

var pool  = mysql.createPool({
  connectionLimit : 10,
  host            : 'example.org',
  user            : 'bob',
  password        : 'secret',
  database        : 'my_db'
});
登入後複製

請確保將hostuserpassworddatabase替換為正確的資料庫連線資訊。連接池成功建立後,即可使用下列程式碼連接資料庫。

pool.getConnection(function(err, connection) {
  // 在此处处理连接错误
  connection.query('SELECT * FROM customers', function(err, rows) {
    // 在此处处理查询结果
    connection.release(); // 释放连接
  });
});
登入後複製

在釋放連線之前,需要注意一件事情:使用MySQL預存程序時,無需釋放連線。因為預存程序會自動關閉連線。在下一個範例中,你將了解如何呼叫預存程序。

呼叫預存程序

假設你有一個名為getCustomers的預存過程,其參數清單如下:

  • ##in_start :以零為基礎的頁面編號。
  • in_amount:要顯示的記錄數。
  • out_total_rows:總行數。
  • out_total_pages:總頁數。
以下範例示範如何使用Node.js呼叫預存程序。

pool.getConnection(function(err, connection) {
  // 在此处处理连接错误
  connection.query('CALL getCustomers(?, ?, @total_rows, @total_pages)', [0, 10], function(err, rows) {
    if (err) throw err;

    // 执行第二个查询以获取返回值
    connection.query('SELECT @total_rows AS total_rows, @total_pages AS total_pages', function(err, rows) {
      if (err) throw err;

      var totalRows = rows[0][0].total_rows;
      var totalPages = rows[1][0].total_pages;

      console.log('Total rows: ' + totalRows);
      console.log('Total pages: ' + totalPages);

      connection.release();
    })
  });
});
登入後複製
在第一行中,我們呼叫了預存程序。請注意,我們使用

?來取代預存程序中的每個參數。在範例中,我們為預存程序傳遞了兩個參數:010@total_rows@total_pages是預存程序的兩個輸出參數。在第一個查詢執行完成之後,我們需要執行另一個SQL查詢來取得帶有輸出參數的值。在取得輸出參數之後,即可對這些值進行操作。

結論

使用Node.js連接資料庫並呼叫預存程序需要仔細處理連接池和連接釋放。在執行預存程序的過程中,無需手動關閉或釋放連線。使用上述範例,可以正確地執行SQL預存程序並取得結果。

以上是如何使用Node.js呼叫SQL預存程序並取得結果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板