パラメータ化されたステートメント
次のコード例は、パラメータをバインドしてパラメータ化されたステートメントを作成する方法を示します。
シングルユース ステートメント
query メソッドは、クエリパラメータを値にバインドするための追加配列パラメータを受け入れます。
db.open("...", (err) => { db.query( "SELECT Worker_Reference_WID, Legal_Name_Last_Name FROM [CData].[Human_Resources].Workers WHERE Legal_Name_Last_Name = ?", ["Morgan"], (err, rows, moreRows) => { for (var i = 0; i < rows.length; i++) { console.log("Worker_Reference_WID = " + rows["Worker_Reference_WID"]); console.log("Legal_Name_Last_Name = " + rows["Legal_Name_Last_Name"]); } if (!moreRows) { console.log("All rows have been processed"); } }); });
リユーザブル ステートメント
prepare メソッドは、プリペアドODBCStatement オブジェクトを作成します。これは、複数のexecute およびexecuteNonQuery 呼び出しで再利用できます。
ODBCStatement を実行すると、コールバックは結果のフェッチに使用されるODBCResult オブジェクトを受け取ります。すべての結果を一度に配列にフェッチするために使用することも、一度に1行ずつフェッチすることもできます。
db.open("...", (err) => { db.prepare( "SELECT Worker_Reference_WID, Legal_Name_Last_Name FROM [CData].[Human_Resources].Workers WHERE Legal_Name_Last_Name = ?", (err, stmt) => { function printData(result, done) { result.fetch((err, row) => { if (row === null) done(); console.log("Worker_Reference_WID = " + row["Worker_Reference_WID"]); console.log("Legal_Name_Last_Name = " + row["Legal_Name_Last_Name"]); printData(result); } } stmt.executeQuery("Morgan 1", (err, result) => { printData(result, () => { stmt.executeQuery("Morgan 2", (err, result) => { printData(result); }); }); }); }); });