我建立了一個數據庫(微軟SqlServerCe.4.0)使用Visual Studio和包含兩個字段一個表:數據庫和數據集無法同步關於自動遞增ID
- ID:整數,主鍵,沒有空,唯一,沒有默認值,標識
- 標稱,我們並不真正關心這個一個
然後我建立包含此表作爲數據表中的數據集,我有這樣一個DataAdapter:
marque_adapter = factory.CreateDataAdapter();
command = connection.CreateCommand();
command.CommandText = "SELECT * FROM " + DB_TABLE_MARQUE + ";";
marque_adapter.SelectCommand = command;
command = connection.CreateCommand();
command.CommandText = "UPDATE " + DB_TABLE_MARQUE + " SET nom = @nom WHERE id = @id;";
CreateAndAddParameterFromSource(command, "id", "id");
CreateAndAddParameterFromSource(command, "nom", "nom");
marque_adapter.UpdateCommand = command;
command = connection.CreateCommand();
command.CommandText = "DELETE " + DB_TABLE_MARQUE + " WHERE id = @id;";
CreateAndAddParameterFromSource(command, "id", "id");
marque_adapter.DeleteCommand = command;
command = connection.CreateCommand();
command.CommandText = "INSERT INTO " + DB_TABLE_MARQUE + " (nom) VALUES (@nom);";
CreateAndAddParameterFromSource(command, "nom", "nom");
marque_adapter.InsertCommand = command;
//...
data = new DataSet();
marque_adapter.Fill(data, DB_TABLE_MARQUE);
當我嘗試插入新行時出現問題。 我做的:
- table.NewRow()
- 設置 「NOM」 字段
- table.Rows.Add(NEWROW)
- adapter.Update(DataSet中,表名)
如果我什麼也沒做,以後我會遇到問題,當我嘗試獲取該行的ID時(我想它會將它設置在上述四條指令之間的某處)。 我期待的DataTable照顧生成一個的,但是......
所以,我想remindind DataTable中照顧自動遞增的:
idColumn.Unique = true;
idColumn.AutoIncrement = true;
現在,它的工作原理是第一次,但當我第二次運行該程序時,它將再次從一個計數器開始計數,並且我被告知該ID應該是唯一的。如果我刪除了數據庫(由Visual製作的sdf文件的副本),或者如果我使用Visual手動刪除行,它將在第一次運行良好,並且我在之後得到相同的錯誤。
問題的確是當我嘗試保存我的DataSet,特別是當添加新行(選擇,更新,刪除很好)時。
很顯然,當涉及DataTable和數據庫時,我沒有得到如何管理主鍵(單獨的數據表是好的)。 特別要同步兩個...
我錯過了什麼? 我很肯定我誤解了一些東西。
非常感謝你,我不知道! – Utundu