SQL Server Express と VS2008 を使用しています。
A
の列を持つID
テーブルを持つデータベースがありますIDENTITY
。ID は自動インクリメントされます。行が削除されても、ID
まだ増加します。
いくつかのデータ操作の後ID
、たとえば現在の値は 15 に達しました。
アプリケーションを実行すると
- 少なくとも 1 行ある場合: 新しい行を追加すると、新しい ID は 16 になります。すべて問題ありません。
- テーブルが空 (行なし) の場合: 新しい行を追加すると、新しい ID は 0 になり、エラーになります (と思います)。
さらにデータ操作 (削除や更新など) を行うと、未処理の例外が発生します。
誰かがこれに遭遇しましたか?
PS。私のテーブル定義では、ID は次のように選択されています。
Identity Increment = 1; Identity Seed =1;
DB ロード コードは次のとおりです。
dataSet = gcnew DataSet();
dataAdapter->Fill(dataSet,"A");
dataTable=dataSet->Tables["A"];
dbConnection->Open();
更新ボタンの方法
dataAdapter->Update(dataSet,"tblInFlow");
dataSet->AcceptChanges();
dataTable=dataSet->Tables["tblInFlow"];
dataGrid->DataSource=dataTable;
更新を押すと:
少なくとも行がある場合: データグリッド ビューが更新され、テーブルが正しく表示されます。
テーブルに何もない (データ行がない) 場合、Add メソッドは新しい行を追加しますが、ID 0 から追加します。プログラムを閉じてもう一度再起動すると、ID は 16 になります。これは正しいです。
これが追加方法です
row=dataTable->NewRow();
row["column1"]="something";
dataTable->Rows->Add(row);
dataAdapter->Update(dataSet,"A");
dataSet->AcceptChanges();
dataTable=dataSet->Tables["A"];