3

asp.NET で型指定されたデータセットを使用して、SQL Server 2000 データベースから挿入された最新の ID を取得できません

テーブルアダプターを作成し、「データテーブルの更新」と「挿入、更新、および削除ステートメントの生成」にチェックを入れました。これにより、Fill メソッドと GetData メソッド、および Insert、Update、Select、および Delete ステートメントが自動生成されます。

このスレッドで考えられるすべての解決策を試しました

http://forums.asp.net/t/990365.aspx

しかし、私はまだ成功していません。常に1(=影響を受ける行の数)を返します。自動生成された insertCommand が私のニーズに完全に適合するため、個別の挿入メソッドを作成したくありません。

上記のスレッドで提案されているように、InsertCommand SQL 構文を更新して SELECT SCOPY_IDENTITY() などを追加しようとしましたが、ReturnValue 型のパラメーターを追加しようとしましたが、影響を受ける行の数しか取得できません。

誰かがこれについて別の見方をしていますか?前もって感謝します!ステイン

4

3 に答える 3

1

これ以上時間を無駄にするわけにはいかないので、あきらめることにしました。Insert ステートメントを使用した後、select MAX(id) クエリを実行して挿入 ID を取得します

誰かが解決策を持っている必要がある場合は、ここで読んでうれしいです

ありがとう

于 2009-09-28T12:27:49.613 に答える
0

テーブルアダプターを使用して、挿入後に増分 ID を取得する方法を見つけました。

私のアプローチは少し異なります。ストア プロシージャを使用して挿入を行っているため、挿入コマンドには ID 以外のすべての値が含まれています。 COMMIT TRAN と最後の行は RETURN @ID になります

次に、InsertCommand のテーブル アダプター パラメーターを検索し、@RETURNVALUE をテーブルのインクリメンタル ID の列に設定したため、実行時に自動的に戻り値が id フィールドに配置されます。

この助けを願っています

于 2011-07-26T15:24:51.637 に答える
0

更新/挿入操作の後にデータテーブルを更新するようにテーブルのテーブルアダプターに指示する必要があります。これがその方法です。

  1. TableAdapter -> Default Select Query -> Advnaced optionsのプロパティを開きます。[データ テーブルを更新する] オプションをオンにします。ここでアダプタを保存します。table-adapter で update を呼び出すと、更新/挿入操作の後に data-table が更新 [更新] され、データベース テーブルの最新の値が反映されます。主キーまたは列が自動インクリメントに設定されている場合、データテーブルには最近の更新後の最新の値が含まれます。

  2. これで、更新を TableAdapterObj.Update(ds.dataTable); として呼び出すことができます。

  3. update/insert の前に、DataTable(ds.dataTable) 列から最新の値を読み取り、それぞれの値を子テーブルに割り当てます。これはまさにあなたが望むように機能します。

代替テキスト http://ruchitsurati.net/files/tds1.png

于 2010-04-21T07:58:53.377 に答える