X++ データの選択と操作の概要
データベースに格納されているデータを取得し変更するため、SQL ステートメントを対話式またはソース コード内で使用することができます。 これらのタスクには、select ステートメントおよび API メソッドを使用できます。
選択 : 変更選択を定義します。
- 選択 : フェッチします。
[データの挿入: 1つ以上の新しいレコードをテーブルに追加します。
- [挿入 および insert レコード : 一度に1つのレコードを挿入します。
- insert_recordset, RecordInsertList.insertDatabase および RecordSortedList.insertDatabase methods : 複数のレコードを同時に挿入します。
[データの: 既存のテーブル レコードのデータを変更します。
- [ 更新 doUpdate レコード : 1件のレコードを一度に更新します。
- update_recordset 状態 : 複数のレコードを同時に更新します。
[データの: テーブルから既存のレコードを削除する。
- [削除 および doDelete レコード : 一度に1つのレコードを削除します。
- delete_from : 複数のレコードを同時に削除します。
データ アクセスに使用するその他のステートメントを次に示します。
トランザクションの整合性 ヘルプは、データの破損を防ぎ、スケーラビリティを向上します。
セット ベースからレコード単位への操作の変換の記事では、レコード セット ベースのステートメントおよびメソッドをより効率的に使用するための情報を提供します。
SysDa クラスを使用してデータを取得および変更することもできます。 拡張可能な SysDa API では、X++ で使用できるほとんどすべてのデータアクセス可能性が提供されます。
executeQueryWithParameters API は、SQL インジェクション攻撃の軽減 に役立ちます。
結合の使用の詳細については、Exists 結合および Notexists 結合についてのよくある誤解 を参照してください。
SQL ステートメントのタイムアウト
上記のすべての SQL ステートメントには、発行するセッション タイプに応じて、ステートメントごとにタイムアウトが設定されます。
- 対話型 - 30分
- 非対話型 (バッチ、サービス、OData) - 3時間
ブロックが原因で、または予想以上のデータ量やクエリ プランの問題で、ステートメントがタイムアウトした場合、メッセージクエリの実行中に、データベース内でタイムアウトが発生しました。と共に型の例外 Exception::Timeout がスローされます。X++ では、この例外に基づく処理タイムアウト例外および再試行を許可します。 既定のタイムアウトは、queryTimeout API を呼び出すことによって上書きできます。