私は MySQL を何度も使用しており、主に NodeJS を扱っています。NodeJS
トピックmysqlの追加、削除、変更、クエリを入力しますまず、mysql という依存パッケージをダウンロードします。このパッケージは、nodejs コードを介してデータベースに接続し、データベースを操作します。 フォルダを作成し、 D:\nodejs_mysql>npm init -y # パッケージ管理ファイルを素早く作成する 依存関係をインストールする D:\nodejs_mysql>npm i mysql -D # mysql依存パッケージをインストールします 次のコードで 定数 mysql = require("mysql"); // mysql接続プールを作成する const pool = mysql.createPool({ host: "127.0.0.1", // データベースに接続するためのアドレス 127.0.0.1 はローカルの mysql です user: "root", // データベースに接続するためのユーザー名。root には最高権限があります。 password: "", // データベースに接続するためのパスワード。 database: "apm", // 操作用のデータベース名。 port: "3306", // MySQL に接続するためのポート番号。 multipleStatements: true, // 複数の SQL 文を一度に実行する場合は、この項目を無視できます。 }); 関数select(){ // mysqlへの接続要求 pool.getConnection((err, 接続) => { // 接続が成功しなかった場合はエラーを報告します if (err) throw err; // 接続オブジェクトを取得し、クエリ メソッドを呼び出して SQL ステートメントを実行します。let sql = "select * from goods"; // SQL ステートメントクエリを実行します。2 番目のパラメーターは SQL ステートメントに必要なパラメーターです。空白のままにすることができます。connection.query(sql, (errors, results, fields) => { // 接続を解放します connection.release(); // SQL ステートメントの実行中にエラーが発生した場合は、エラーをスローします。if (errors) throw errors; console.log(結果); console.log(フィールド); }); }); } 選択(); 上記のコードは、 カプセル化メソッドは // インデックス.js // ... 前のコードを無視してMySQL接続プール関数を作成します query(sql, params) { 新しい Promise を返します ((resolve, reject) => { pool.getConnection((err, 接続) => { // 接続が成功しなかった場合はエラーを報告します。if (err) return reject(err); // 接続オブジェクトを取得し、クエリメソッドを呼び出して SQL 文を実行します // SQL 文クエリを実行します 2 番目のパラメータは SQL 文に必要なパラメータで、省略できます connection.query(sql, params, (errors, results, fields) => { // 接続を解放します connection.release(); // SQL ステートメントの実行中にエラーが発生した場合は、エラーをスローします。if (errors) return reject(errors); 解決(結果); }); }); }); } クエリ("商品から*を選択", null).then((結果) => { console.log(結果); }); モジュール.エクスポート = { クエリ、 }; 使用 // データ.js 定数index = require("./index.js"); var sql = "商品から*を選択"; 索引 .クエリ(sql, null) .then((結果) => { // 何でもする.... }) .catch((エラー) => { // エラー コンソールログ(エラー); }); これにより、データベースが SQL を実行するためのインターフェースが公開されます。 MySQL トランザクション処理MySQL トランザクションに関しては、あまり詳しく説明しません。参考までに、ここにリンクがあります。 MySQL トランザクション処理 早速本題に入り、 // インデックス.js // .... プールを作成するコードの一部 /** * mysqlトランザクション処理 * @param {Array} sqls 実行されるSQL文 * @param {Array} 上記のSQL文のパラメータに対応するパラメータ * @returns {Promise} Promiseを返します */ 関数トランザクション(sqls, params) { 新しい Promise を返します ((resolve, reject) => { pool.getConnection(関数(err, connection) { // 接続に失敗したpromiseは、直接失敗を返しますif (err) { 拒否(err)を返します。 } // ステートメントとパラメータ番号が一致しない場合、promise は直接失敗を返します if (sqls.length !== params.length) { connection.release(); // 解放 return reject(new Error("ステートメントが渡された値と一致しません")); } // トランザクションの実行を開始する connection.beginTransaction((beginErr) => { // トランザクションの作成に失敗しました if (beginErr) { 接続を解放します。 拒否を返します(beginErr); } console.log("合計 " + sqls.length + " ステートメントのトランザクションの実行を開始します"); // プロミス配列を返す let funcAry = sqls.map((sql, index) => { 新しい Promise((sqlResolve, sqlReject) => { を返します constデータ = params[インデックス]; connection.query(sql, データ, (sqlErr, 結果) => { (SQLエラー)の場合{ sqlResolve(sqlErr) を返します。 } sqlReject(結果); }); }); }); // all メソッドを使用して、その中の各プロミスのステータスを確認します。Promise.all(funcAry) .then((arrResult) => { // 各SQL文が正常に実行されると、このポイントに到達します。ここで、トランザクションをコミットする必要があり、以前のSQL実行が有効になります。 // トランザクションをコミットします connection.commit(function (commitErr, info) { コミットエラーの場合 // トランザクションの送信に失敗しました console.log("トランザクションの送信に失敗しました: " + commitErr); // トランザクションのロールバック、以前に実行されたSQL文が無効 connection.rollback(function (err) { if (err) console.log("ロールバックに失敗しました: " + err); 接続を解放します。 }); // プロミスの失敗ステータスを返す return reject(commitErr); } 接続を解放します。 // トランザクションは各 SQL 実行の結果を配列構造として正常に返します。resolve(arrResult); }); }) .catch((エラー) => { // 複数のSQL文のうちの1つが実行中にエラーを報告した場合は、直接ロールバックします connection.rollback(function () { console.log("SQL 実行に失敗しました: " + エラー); 接続を解放します。 拒否(エラー); }); }); }); }); }); } モジュール.エクスポート = { 取引、 }; その後は、このメソッドを呼び出してmysqlトランザクションを実行するだけです。 // データ.js 定数index = require("./index.js"); var sqls = [ "delete from goods where goods_id = ?"、// 削除ステートメント "update goods set num = ? where goods_id = ?;、// 更新ステートメント]; var パラメータ = [ [1]、// parmasは配列形式であり、sqls?のsql文に対応します。[5、3]、 ]; 索引 .transaction(sqls, パラメータ) .then((arrResult) => { // 何でもする.... }) .catch((エラー) => { // エラー コンソールログ(エラー); }); ノード接続mysqlクエリトランザクション処理の実装に関するこの記事はこれで終わりです。より関連性の高いノード接続mysqlクエリトランザクション処理コンテンツについては、123WORDPRESS.COMの以前の記事を検索するか、次の関連記事を引き続き参照してください。今後も123WORDPRESS.COMを応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL データベース分離レベルと MVCC の詳細な説明
MySQL 5.0 は、いくつかの「高度な機能」があるため定番となっています。これは、Windows...
メタ宣言注釈の手順: 1. モバイル ページと 1 対 1 で対応するすべての PC ページを分類し...
実際のプロジェクトでは、緊急事態を防ぐためにデータベースを頻繁にバックアップする必要があります。しば...
コメントとメッセージはもともと、ウェブマスターがコミュニティと読者層を構築するための優れた手段でした...
この記事では、ツリー構造テーブルを実現するためのElement-uiテーブルの具体的なコードを参考ま...
CSS 組み合わせセレクターには、単純なセレクターのさまざまな組み合わせが含まれます。 CSS3 に...
目次1. 新しいプロジェクトを作成する2. 依存関係を追加する3. SpringコンテナにDrive...
目次1. はじめに2. 使用方法ステートレスコンポーネントステートフルコンポーネント制御コンポーネン...
1. 自然なレイアウト<br />レイアウトは変更せずに自動的に左揃えになります。 2....
絶対位置決め方式: (1)親要素を相対配置に設定します。親要素の高さを指定しない場合は、左の子要素の...
私たちが毎日使っているブラウザや Word 文書のスクロール バーはなぜ右側にあるのでしょうか。多く...
具体的なupgradeスクリプトは次のとおりです。インデックスを動的に削除する アップグレードが存在...
目次1. はじめに1.1 Babel トランスコーダ1.2 ポリフィル2. let と const ...
1. 概要Redis Cluster は、Redis ノードのグループ間での高可用性とシャーディング...
序文MySQL 5.7.11 以降、MySQL は、別の表領域に格納された InnoDB テーブルの...