English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Node.js에서 MySQL 쿼리를 실행할 때, Result Object라는 이름의 객체가 콜백 함수에 반환됩니다. 결과 객체는 MySQL 서버에서 쿼리 실행에 대한 정보를 제공하는 결과 집합이나 속성을 포함합니다.
MySQL 서버에 대해 SQL 쿼리를 수행한 결과에 따라 결과 객체의 내용이 다릅니다. 다음 표는 선택, 삽입, 수정 및 삭제와 같은 쿼리의 결과 객체를 설명합니다.
MySQL 쿼리 | 결과 객체 |
SELECT FROM | 레코드를 포함한 결과 집합 |
INSERT INTO | 실행 상태를 포함한 객체 |
UPDATE | 실행 상태를 포함한 객체 |
DELETE FROM | 실행 상태를 포함한 객체 |
다음 예제를 통해 결과 집합의 레코드 속성에 접근하는 방법과 실행 상태 속성에 접근하는 방법을 이해할 수 있습니다.
MySQL SELECT FROM 쿼리– ResultSet에 접근
MySQL INSERT INTO 쿼리–결과 객체의 속성에 접근
MySQL UPDATE 쿼리-결과 객체의 속성에 접근
MySQL DELETE FROM 쿼리-결과 객체의 속성에 접근
결과 집합의 레코드를 배열과 레코드의 속성으로 접근할 수 있는 점(.) 연산자를 사용할 수 있습니다.
// Node.js MySQL 결과 객체 예제 // mysql 모듈 가져오기 var mysql = require('mysql'); // 필요한 상세 정보를 가진 연결 변수 생성 var con = mysql.createConnection({ host: "localhost", // mysql을 실행하는 서버의 IP 주소 user: "arjun", // mysql 데이터베이스의 사용자 이름 password: "password", // 해당 비밀번호 database: "studentsDB" // 지정된 데이터베이스를 사용합니다 }); // 데이터베이스와의 연결 설정 con.connect(function(err) { if (err) throw err; // 연결이 성공하면 con.query("SELECT * FROM students", function (err, result, fields) { // 위 쿼리 실행 중에 어떤 오류가 발생하면 오류를 터치합니다 if (err) throw err; // 에러가 없으면 결과를 받습니다 // 대상 결과의 모든 행을 순회합니다 Object.keys(result).forEach(function(key) { var row = result[key]; console.log(row.name) }); }); });
터미널에서 위 프로그램을 실행합니다
터미널 출력
arjun@arjun-VPCEH26EN:~/워크스페이스/nodejs$ node selectUseResultObject.js John Arjun Prasanth Adarsh Raja Sai Ross Monica Lee Bruce Sukumar
결과 객체의 속성에 접근할 수 있는 DOT(.) 연산자를 사용할 수 있습니다.
// mysql 모듈 가져오기 var mysql = require('mysql'); // 필요한 상세 정보를 가진 연결 변수 생성 var con = mysql.createConnection({ host: "localhost", // mysql을 실행하는 서버의 IP 주소 user: "arjun", // mysql 데이터베이스의 사용자 이름 password: "password", // 해당 비밀번호 database: "studentsDB" // 지정된 데이터베이스를 사용합니다 }); // 데이터베이스와의 연결 설정 con.connect(function(err) { if (err) throw err; // 연결이 성공하면 var records = [ ['Jack', 16, 82], ['Priya', 17, 88], ['Amy', 15, 74] ]; con.query("INSERT INTO students (name,rollno,marks) VALUES ?", [records], function(err, result, fields) { // 위 쿼리 실행 중에 어떤 오류가 발생하면 오류를 터치합니다 if (err) throw err; // 에러가 없으면 결과를 받습니다 console.log(result); console.log("영향을 받은 행 수: ", + result.affectedRows); console.log("경고와 함께 영향을 받은 레코드 수: ", + result.warningCount); console.log("MySQL 서버에서의 메시지: ", + result.message); }); });
터미널에서 위 프로그램을 실행합니다
터미널 출력
arjun@arjun-VPCEH26EN:~/워크스페이스/nodejs$ node MultipleInsertExample.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, 서버 상태: 2, warningCount: 0, message: '&Records: 3 Duplicates: 0 Warnings: 0', 프로토콜41: true, changedRows: 0 } 영향을 받은 행 수: 3 경고와 함께 영향을 받은 레코드 수: 0 MySQL 서버 메시지: &Records: 3 Duplicates: 0 Warnings: 0
결과 객체의 속성에 접근할 수 있는 DOT(.) 연산자를 사용할 수 있습니다.
// mysql 모듈 가져오기 var mysql = require('mysql'); // 필요한 상세 정보를 가진 연결 변수 생성 var con = mysql.createConnection({ host: "localhost", // mysql을 실행하는 서버의 IP 주소 user: "arjun", // mysql 데이터베이스의 사용자 이름 password: "password", // 해당 비밀번호 database: "studentsDB" // 지정된 데이터베이스를 사용합니다 }); // 데이터베이스와의 연결 설정 con.connect(function(err) { if (err) throw err; // 연결이 성공하면 con.query("UPDATE students SET marks=84 WHERE marks=74", function (err, result, fields) { // 위 쿼리 실행 중에 어떤 오류가 발생하면 오류를 터치합니다 if (err) throw err; // 에러가 없으면 결과를 받습니다 console.log(result); console.log("영향을 받은 행 수: ", + result.affectedRows); console.log("경고와 함께 영향을 받은 레코드 수: ", + result.warningCount); console.log("MySQL 서버에서의 메시지: ", + result.message); }); });
터미널에서 위 프로그램을 실행합니다
터미널 출력
arjun@arjun-VPCEH26EN:~/워크스페이스/nodejs$ node UpdateRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 3, insertId: 0, 서버 상태: 34, warningCount: 0, message: '(Rows matched: 3 Changed: 3 Warnings: 0', 프로토콜41: true, changedRows: 3 } 영향을 받은 행 수: 3 경고와 함께 영향을 받은 레코드 수: 0 MySQL 서버 메시지: (Rows matched: 3 Changed: 3 Warnings: 0
결과 객체의 속성에 접근할 수 있는 DOT(.) 연산자를 사용할 수 있습니다.
// mysql 모듈 가져오기 var mysql = require('mysql'); // 필요한 상세 정보를 가진 연결 변수 생성 var con = mysql.createConnection({ host: "localhost", // mysql을 실행하는 서버의 IP 주소 user: "arjun", // mysql 데이터베이스의 사용자 이름 password: "password", // 해당 비밀번호 database: "studentsDB" // 지정된 데이터베이스를 사용합니다 }); // 데이터베이스에 연결합니다. con.connect(function(err) { if (err) throw err; // 연결이 성공하면 con.query("DELETE FROM students WHERE rollno>10", function (err, result, fields) { // 위 쿼리 실행 중에 어떤 오류가 발생하면 오류를 터치합니다 if (err) throw err; // 에러가 없으면 결과를 받습니다 console.log(result); console.log("영향을 받은 행 수: ", + result.affectedRows); console.log("경고와 함께 영향을 받은 레코드 수: ", + result.warningCount); console.log("MySQL 서버에서의 메시지: ", + result.message); }); });
터미널에서 위 프로그램을 실행합니다
터미널 출력
arjun@arjun-VPCEH26EN:~/워크스페이스/nodejs$ node deleteRecordsFiltered.js OkPacket { fieldCount: 0, affectedRows: 6, insertId: 0, 서버 상태: 34, warningCount: 0, 메시지: '', 프로토콜41: true, changedRows: 0 } 영향을 받은 행 수: 6 경고와 함께 영향을 받은 레코드 수: 0 MySQL 서버에서의 메시지:
이 Node.js 강의 - Node.js MySQL - 결과 객체에서는 결과 집합의 레코드에 접근하는 방법을 배웠고, 예제를 통해 쿼리 실행 정보를 포함한 결과 객체의 속성에 접근했습니다.