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