我正在使用SQL Server Express和VS2008。加載空數據庫表
我有一個數據庫與表A
,它有一列ID
爲IDENTITY
。該ID是自動遞增的。即使該行被刪除,ID
仍會增加。
經過多次數據處理後,當前的ID
已達到15個,例如。
當我運行應用程序
- ,如果有至少1行:如果我添加一個新行,新的ID是16。一切都很好。
- 如果表爲空(無行):如果我添加一個新行,新的ID是0,這是一個錯誤(我認爲)。
進一步的數據操作(例如刪除或更新)將導致未處理的異常。
有沒有人遇到過這個?
PS。在我的表定義中,ID已被選定爲:
Identity Increment = 1; Identity Seed =1;
數據庫負載代碼:
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;
如果我按更新:
如果至少有一行:datagrid視圖更新並正確顯示錶。
如果表中沒有任何數據行(無數據行),則Add方法將添加一個新行,但來自ID 0. 如果關閉程序並重新啓動它:ID將爲16,即正確。
這是add方法
row=dataTable->NewRow();
row["column1"]="something";
dataTable->Rows->Add(row);
dataAdapter->Update(dataSet,"A");
dataSet->AcceptChanges();
dataTable=dataSet->Tables["A"];
你可以顯示錶的定義,以及當表爲空時添加新行的代碼?聽起來像是表格最初沒有正確植入,或者您手動重新播種。如果身份應該從1開始,配置應該是'IDENTITY(1,1)',因此除非發生其他事情,否則不應該得到0。所以你需要提供更多的信息。 –
我想在聲明一個身份列時,你需要指定種子和增量值,例如CREATE TABLE dbo.MyTable(ID int identity(1,1),Name varchar(20)) – praveen
請看看我上面編輯的問題。謝謝。 –