掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
DataTableで採番するには? (ID:144610)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
どのデータベースを使っているのかによっても変わってきますね。 手動採番の場合は、もちろん MAX + 1 でも良いと思います。 ただし、複数の接続からほぼ同時に処理がおこなれた場合に、 値の重複が発生しないような設計にしておいてください。 たとえば 1〜5 が登録済みで、A と B からほぼ同時に採番される場合、 (1) A が MAX+1 を取得 → 6 番をGET (3) A がレコード追加 → 6 番を登録 (2) B が MAX+1 を取得 → 7 番をGET (4) A がレコード追加 → 7 番を登録 となれば良いですが、ごく僅かなタイミングの差で、 (1) A が MAX+1 を取得 → 6 番をGET (2) B が MAX+1 を取得 → 6 番をGET (3) A がレコード追加 → 6 番を登録 (4) A がレコード追加 → 重複エラー となってはいけませんよね。 また、DB 側で自動採番されるタイプの列(Jet のオートナンバー等)の場合は、 DataColumn を AutoIncrement にしておく方法を使う事もできます。 http://msdn.microsoft.com/library/ja/cpguide/html/cpconupdatingdatabasewithdataadapterdataset.asp たとえば、DataSet 側では、-1,-2,-3,…という負数で採番しておき、 TableAdapter(あるいはDataAdapter)の InsertCommand では、その列の値を 利用させず、データベース側の自動採番に任せるという手法です。 多くの場合、オートナンバー列は 1,2,3,…という正数で管理される事が多いため、 DataTable側では一時的に、(登録までの間は)マイナス値を使っておくことで、 重複を避けるという常套手段です。 これらは、どちらの方法が良い/悪いというものでも無いので、 Franz さんのシステムに合わせて、都合のよい方法を選んでみてください。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.