テキスト:JavaScriptでMySQL操作(お試し)
参考
~/study/nodejsで作業する。
mysql2パッケージのインストール
code:console
$ npm install mysql2
以下が作成されていることを確認。
package.json
package-lock.json
node_modulesフォルダ
上記のファイルは直接変更してはいけません。
npm install 実行時は以下のような挙動をしています。
package.json の内容を更新する
package.json の内容をもとに node_modules のディレクトリにパッケージをインストールする
node_modules に実際にインストールされたパッケージのバージョン情報が package-lock.json に記述される
以下のような記述の差がある。
package.json
インストールすべきパッケージのバージョンの範囲
その他もろもろ(npm-scripts など)
package-lock.json
npm install によって実際にインストールしたパッケージのバージョンのみ
以下のconnect-mysql.jsを作成・記述。
code:connect-mysql.js
// パッケージの読み込み
const mysql = require('mysql2');
// データベースとの接続
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '設定したパスワード',
database: 'restaurant'
});
// 接続できていないときのエラー
connection.connect(function(err){
if(err) {
console.log('error connectiong: ' + err.stack);
return;
}
console.log('success');
})
// queryの実行
connection.query(
'select * from item',
function(err, results, filelds){
console.log('\n「select * from item」\n');
console.log(results);
});
connection.query(
'select * from item',
function(err, results, filelds){
console.log('\n「select * from item」の1つ目の要素\n');
});
connection.query(
'select * from item',
function(err, results, filelds){
console.log('\n「select * from item」の1つ目の要素のname\n');
});
// 接続を閉じる
connection.end();
実行
code:console
$ node connect-mysql.js
定義
connect(callback?: (err: Query.QueryError | null) => void): void;
query<T extends RowDataPacket[][] | RowDataPacket[] | OkPacket | OkPacket[] | ResultSetHeader>(sql: string, callback?: (err: Query.QueryError | null, result: T, fields: FieldPacket[]) => any): Query;
一旦、注目したいのはcallback
callbackは「コールバック関数のこと」
ひとことで言うと、「引数として渡される関数」のことをいう。
他関数の引数として使用し、特定のタイミングで実行させることができます。「あの処理が終わった後に、この関数を実行したい」など。
参考URL先のコードを一部拝借
code:callback.js
/* --- 変数・関数定義 --- */
var trapCard = function() {
console.log('トラップカード発動!');
};
// オレのターン!と表示してから、引数を実行する関数
var myTurn = function(callback) {
console.log('オレのターン!');
callback();
};
/* 呼び出し */
myTurn(trapCard);
// オレのターン!
// トラップカード発動!
queryの実行
↓
結果(成功するかもしれないし、失敗するかもしれない)
↓
結果を処理したい → callback
横道だけど大事
アロー関数を使って書き換えた場合
code:connect-mysql.js
// パッケージの読み込み
const mysql = require('mysql2');
// データベースとの接続
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '設定したパスワード',
database: 'restaurant'
});
// 接続できていないときのエラー
connection.connect((err) => {
if(err) {
console.log('error connectiong: ' + err.stack);
return;
}
console.log('success');
})
// queryの実行
connection.query(
'select * from item',
(err, results, filelds) => {
console.log('\n「select * from item」\n');
console.log(results);
});
connection.query(
'select * from item',
(err, results, filelds) => {
console.log('\n「select * from item」の1つ目の要素\n');
});
connection.query(
'select * from item',
(err, results, filelds) => {
console.log('\n「select * from item」の1つ目の要素のname\n');
});
// 接続を閉じる
connection.end();
演習
sql文select * from itemを実行して、商品金額の合計をプログラムで導出・表示してください。
答えはselect sum(price) from itemの結果と一緒になります。
sql文select * from empを実行して、「山」から始まる従業員の名前を導出・表示してください。
答えはselect name from emp where name like '山%';の結果と一緒になります。