Sunday, November 19, 2017

Belajar Node.js Part 14 - Insert Into MySQL




Untuk mengisi sebuah tabel dalam MySQL, gunakan pernyataan "INSERT INTO".

Contohnya, jika kita meng-insert sebuah record ke dalam tabel "pelanggans":

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: "localhost",
  user: "nama_pengguna_anda",
  password: "password_anda",
  database: "dbsaya"
});

connection.connect(function(err) {
  if (err) throw err;
  console.log("Terkoneksi!");
  var sql = "INSERT INTO pelanggans (name, address) VALUES ('PT. Perusahaan', 'Jalan Anggur 30')";
  connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record diinseert");
  });
});

Simpan kode tersebut dengan nama "mysql_4.js", kemudian jalankan dengan perintah:
node mysql_4.js
Hasilnya akan seperti ini:
Terkoneksi!
1 record diinseert

Meng-Insert Banyak Records

Untuk meng-insert lebih dari satu record, buat sebuah array yang berisi nilai-nilai yang akan dimasukkan, kemudian beri tanda tanya (?) di dalam SQL-nya.

[MY_ADS/]

Nanti tanda tanya tersebut akan di-replace dengan array:
INSERT INTO pelanggans (name, address) VALUES ?
Contohnya, isi tabel "pelanggans" dengan data:

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: "localhost",
  user: "nama_pengguna_anda",
  password: "password_anda",
  database: "dbsaya"
});

connection.connect(function(err) {
  if (err) throw err;
  console.log("Terkoneksi!");
  var sql = "INSERT INTO pelanggans (name, address) VALUES ?";
  var values = [
    ['Mas Andi', 'Jalan Anggrek No. 71'],
    ['Jack', 'Jalan Anggrek No. 4'],
    ['Budi', 'Jalan Anggrek No. 652'],
    ['Nina', 'Jalan Anggrek No. 21'],
    ['Anton', 'Jalan Anggrek No. 345'],
    ['Jack1', 'Jalan Anggrek No. 2'],
    ['Jack2', 'Jalan Anggrek No. 1'],
    ['Jack3', 'Jalan Anggrek No. 331'],
    ['Jack4', 'Jalan Anggrek No. 98'],
    ['Jack5', 'Jalan Anggrek No. 2'],
    ['Jack6', 'Jalan Anggrek No. 38'],
    ['Jack7', 'Jalan Anggrek No. 954'],
    ['Jack8', 'Jalan Anggrek No. 989'],
    ['Jack9', 'Jalan Anggrek No. 1633']
  ];
  connection.query(sql, [values], function (err, result) {
    if (err) throw err;
    console.log("Jumlah record yang diinsert: " + result.affectedRows);
  });
});

Simpan kode tersebut dengan nama "mysql_5.js", kemudian jalankan dengan perintah:
node mysql_5.js
Hasilnya akan seperti ini:
Terkoneksi!
Jumlah record yang diinsert: 14

Result Object

Ketika mengeksekusi sebuah query, sebuah result object dikembalikan.

Result object mengandung informasi tentang bagaimana query memengaruhi tabel.

Result object yang dikembalikan dari contoh di atas terlihat seperti ini:

{
  fieldCount: 0,
  affectedRows: 14,
  insertId: 0,
  serverStatus: 2,
  warningCount: 0,
  message: '\'Records:14  Duplicated: 0  Warnings: 0',
  protocol41: true,
  changedRows: 0
}

Contohnya, kembalikan jumlah row yang terdampak:

console.log(result.affectedRows)

Nilai dari properties dapat ditampilkan seperti ini:
14

Mendapatkan ID yang telah Di-Insert

Untuk tabel dengan auto increment id, kita dapat mendapatkan id dari row yang baru kita insert dengan result object.

Catatan: Untuk bisa mendapatkan inserted id, hanya satu row yang bisa diinsert.

Contohnya, jika kita meng-insert sebuah record dalam tabel "pelanggans" dan mengembalikan ID-nya:

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: "localhost",
  user: "nama_pengguna_anda",
  password: "password_anda",
  database: "dbsaya"
});

connection.connect(function(err) {
  if (err) throw err;
  var sql = "INSERT INTO pelanggans (name, address) VALUES ('Yoga', 'Jalan Patin No. 1')";
  connection.query(sql, function (err, result) {
    if (err) throw err;
    console.log("1 record diinseert, ID: " + result.insertId);
  });
});

Simpan kode di atas dengan nama "mysql_6.js", kemudian jalankan perintah ini:
node mysql_6.js
Hasilnya akan seperti ini:
1 record diinseert, ID: 15
Sumber:
https://www.w3schoools.com