私は 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 の詳細な説明
SSL 証明書の使用についてはここでは説明しません。SSL 証明書を導入する必要がある友人は、すでに...
目次1. IDEAはdockerプラグインをダウンロードします2. クラウドサーバーDocker 2...
1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...
目次1. ラベルステートメントの紹介2. ラベルステートメントの使用序文:日常の開発では、プログラム...
ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...
1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...
MySQL データベース インデックスが B+ ツリーを使用する理由をさらに分析する前に、データ構...
この記事では、天気予報機能を実現するためのVueの具体的なコードを参考までに共有します。具体的な内容...
nginx を導入した際に、フォワードプロキシの設定も nginx を使っていました。しかし、htt...
序文今日、nginx で非常に奇妙な問題に遭遇しました。フロントエンドの tomcat がページにジ...
おそらく誰もが js の実行によって DOM ツリーの解析とレンダリングがブロックされることを知って...
1つのポートの変更バージョン 3.2.0 では、ネームノード ページ ポートは 9870、データノー...
この記事の例では、カスケードセレクターを実装するためのelementUIの具体的なコードを参考までに...
達成された効果実装コードhtml <div class="scene"&g...
目次1. 開発環境から本番環境への移行2. 統一されたリクエストパスを設定する3. パッケージ化コマ...