- - PR -
新しく挿入したRowのオートナンバー値
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-07-15 21:47
Webアプリケーション(C#)でオートナンバー型のフィールドを持つテーブルに、
NewRow()で新しいRowを追加し、その後、 新しく生成されたオートナンバー型のフィールドの値を取得しようと思い、 Rowを追加後、 int tID; OleDbCommand idCMD = new OleDbCommand("SELECT @@IDENTITY", oUCn); oUCn.Open(); tID = ((int)idCMD.ExecuteScalar()); oUCn.Close(); としたのですが、毎回、tIDの値が0になってしまいます。 根本的に何か間違っているのでしょうか? |
|
投稿日時: 2003-07-16 00:18
はっきりとは分からないのですが、同じコネクション内で行なう必要がある
んじゃないでしょうか? |
|
投稿日時: 2003-07-16 01:00
こんにちは。
@@IDENTITY関数ではなかなか正確にIDを取れないことが多いので、私の場合はIDENT_CURRENT('table_name')という関数を使用しています。(SQL serverの場合)これで、'table_name'の部分に最後にレコードを追加したテーブル名を入れ込み、取れないでしょうか? しかし、「いし」さんの仰っているように異なったコネクションでもIDを取得できるかどうかはテストしていませんので、分かりません。 正確ではなくて、申し訳ありませんが、上手く行けば幸いです。 |
|
投稿日時: 2003-07-16 12:12
いしさん、モデラートさんありがとうございます。
ここへの書きこみ後、一度ソースを書き直してみたところ、 tIDの値を正しく得ることが出来ました。 他にも何箇所かハマっていたところがあるため、ソースを書きちらかしており、 このため、いしさんの書きこみにあるように違うコネクションでIDを取得しようとしていたのだと思います。 解決後、意図的に違うコネクションで試してみたところ、0になっておりました。 ありがとうございました。 |
1