Node.js - MySQLにデータを插入する

こんにちは、未来のプログラミングスーパースターたち!今日は、Node.jsとMySQLの世界に興味深い旅に出ます。具体的には、Node.jsを使用してMySQLデータベースにデータを插入する方法に焦点を当てます。プログラミングの初心者でも安心してください - 私があなたの親切なガイドとして、すべてをステップバイステップで説明します。では、さあ始めましょう!

Node.js - MySQL Insert Into

Node.jsとMySQLとは?

始める前に、まずNode.jsとMySQLとは何かを簡単に理解しましょう:

  1. Node.js: JavaScriptの強力なランタイムで、パソコン上でJavaScriptを実行できるようにします。ウェブブラウザだけでなくです。
  2. MySQL: データを保存し、管理するための人気のデータベースシステムです。

Node.jsをシェフ、MySQLを大きな整理された冷蔵庫と考えましょう。私たちはNode.jsを使用してコードを作り、MySQLの冷蔵庫にデータを入れるのです!

環境の設定

まず第一に、私たちのキッチン(つまり開発環境)を設定する必要があります。以下の手順を踏んでください:

  1. 公式ウェブサイト(nodejs.org)からNode.jsをインストールします。
  2. mysql.comからMySQLをインストールします。
  3. ターミナルで以下のコマンドを実行して、Node.js用のMySQLモジュールをインストールします:
npm install mysql

素晴しい!今ではすべての材料が準備できています。では、料理...つまりコーディングを始めましょう!

Node.jsでの插入

接続の確立

データを插入する前に、MySQLデータベースに接続する必要があります。以下のようにします:

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});

connection.connect((err) => {
if (err) {
console.error('データベース接続エラー: ' + err.stack);
return;
}
console.log('データベースに接続しました。');
});

以下を分解します:

  1. 先ほどインストールしたMySQLモジュールを要求します。
  2. mysql.createConnection()を使用して接続を作成し、データベースの詳細を提供します。
  3. connection.connect()を使用してデータベースに実際に接続します。
  4. エラーが発生した場合、それをログに記録します。それ以外の場合、接続確認を行います。

シンプルなINSERTクエリ

これで接続が確立したので、データを插入してみましょう!usersテーブルがあり、idnameemailというカラムがあると仮定します。新しいユーザーを以下のように插入します:

const newUser = { name: 'John Doe', email: '[email protected]' };

connection.query('INSERT INTO users SET ?', newUser, (error, results) => {
if (error) throw error;
console.log('新しいユーザーが追加されました。ID: ' + results.insertId);
});

ここで何が起こっているのでしょう?

  1. newUserオブジェクトを作成し、插入したいデータを設定します。
  2. connection.query()を使用してSQLクエリをデータベースに送信します。
  3. クエリ内の?はプレースホルダーで、MySQLはそれをnewUserオブジェクトに置き換えます。
  4. 成功した場合、MySQLはいくつかの結果を返し、新しいレコードのIDを含みます。

複数のレコードの插入

一度に複数のユーザーを追加したい場合はどうでしょうか?それもできます!

const users = [
{ name: 'Alice', email: '[email protected]' },
{ name: 'Bob', email: '[email protected]' },
{ name: 'Charlie', email: '[email protected]' }
];

connection.query('INSERT INTO users (name, email) VALUES ?', [users.map(user => [user.name, user.email])], (error, results) => {
if (error) throw error;
console.log('挿入されたレコード数: ' + results.affectedRows);
});

新しい点は以下の通りです:

  1. ユーザーオブジェクトの配列を作成します。
  2. users.map()を使用して配列をMySQLが期待する形式に変換します。
  3. プレースホルダー?は複数の値セットを表します。
  4. results.affectedRowsは挿入されたレコードの数を教えます。

プリペアドステートメントでのINSERT

さあ、プレパラードステートメントでレベルアップしましょう。これらは、データ(材料)を毎回変更するだけで何度も使えるレシピのようです。

const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const values = ['David', '[email protected]'];

connection.query(sql, values, (error, results) => {
if (error) throw error;
console.log('新しいユーザーが追加されました。ID: ' + results.insertId);
});

ここで特別な点は以下の通りです:

  1. SQLクエリとデータを分離しています。
  2. クエリ内の?プレースホルダーはデータが置かれる場所を表します。
  3. values配列をquery()メソッドの別の引数として渡します。

この方法はセキュリティが高く、SQLインジェクション攻撃を防ぐことができます。信頼できるレシピを使うのと同じです!

プリペアドステートメントの再利用

プリペアドステートメントの真正の力は再利用にあります:

const sql = "INSERT INTO users (name, email) VALUES (?, ?)";
const users = [
['Eva', '[email protected]'],
['Frank', '[email protected]'],
['Grace', '[email protected]']
];

users.forEach(user => {
connection.query(sql, user, (error, results) => {
if (error) throw error;
console.log('新しいユーザーが追加されました。ID: ' + results.insertId);
});
});

ここでは、同じSQL「レシピ」を各ユーザーごとにデータ(材料)を変更して再利用しています。

接続の閉じる

料理が終わったらキッチンを閉じましょう!つまり、クエリが完了したらデータベース接続を閉じます:

connection.end((err) => {
if (err) {
console.error('データベース接続終了エラー: ' + err.stack);
return;
}
console.log('データベース接続を閉じました。');
});

これにより、不要な接続を開けっ放しにすることなく、アプリケーションやデータベースサーバーのパフォーマンスを低下させるのを防ぎます。

メソッドのまとめ

ここで学んだメソッドの簡単な参照表を示します:

メソッド 説明
mysql.createConnection() MySQLデータベースに接続を作成します
connection.connect() データベース接続を確立します
connection.query() SQLクエリを実行します
connection.end() データベース接続を閉じます

結論

おめでとうございます!あなたは刚刚Node.jsを使用してMySQLデータベースにデータを插入する方法を学びました。単純な插入、複数の插入、そしてプリペアドステートメントまでカバーしました。練習が habits つくりますので、これらの概念を実践してみてください。

私の教師としての経験から言えば、実際にやることで学ぶのが一番です。それでは、小さなプロジェクトを作ってみませんか?お気に入りのレシピをデータベースに保存するシンプルなアプリ、例えば?そうすることで、新しいスキルを実践し、おばあちゃんの秘伝のクッキーレシピを決して失うことのないようにできます!

ハッピーコーディング、そしてあなたのデータベースが常に適切に正規化されていることを祈っています!

Credits: Image by storyset